gpt4 book ai didi

c# - 套接字连接在我读取数据之前重置

转载 作者:太空狗 更新时间:2023-10-29 23:53:30 25 4
gpt4 key购买 nike

我在使用 .net 套接字从客户端接收数据时遇到问题。客户端正在与 TCP 通信并在立即关闭连接之前发送一个或两个数据包。招待会是这样的:

Socket newConnection = listener.EndAccept(ar);
newConnection.BeginReceive(myBuffer,0, length, SocketFlags.None, Callback,null);

并且执行不会更进一步。 beginReceive 将立即抛出一个 SocketException 表示连接已重置。我无法获取接收到的数据。

这是我在 wireshark 上看到的这个连接:

SYN // SYN, AKC // AKC
PSH, ACK for 156 bytes
PSH, ACK for 176 bytes
RST, ACK

就是这样。即使客户端关闭了连接,是否有任何方法可以获取接收到的数据?

最佳答案

首先,对于这种类型的通信,切换到 UDP 而不是 TCP 可能是个好主意 - 这样无论发送方的状态如何,您都可以获取数据包。
假设 TCP 是唯一的选择——我建议使用同步调用:

Socket newConnection = listener.AcceptSocket();
newConnection.Receive(myBuffer, 0, length, SocketFlags.None);

关于c# - 套接字连接在我读取数据之前重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com