在我读取数据之前,套接字连接重置

本文关键字:套接字 连接 读取 数据 | 更新日期: 2023-09-27 18:01:21

我有一个问题,从客户端使用。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);