我在使用.net套接字从客户端接收数据时遇到问题.客户端正在与TCP通信并在立即关闭连接之前发送一个或两个数据包.接待会像这样:
Socket newConnection = listener.EndAccept(ar);
newConnection.BeginReceive(myBuffer,0, length, SocketFlags.None, Callback,null);
Run Code Online (Sandbox Code Playgroud)
并且执行不会更进一步.beginReceive将立即抛出一个SocketException,表示连接已重置.我无法获得收到的数据.
这是我在wireshark上看到的这个连接:
SYN // SYN, AKC // AKC
PSH, ACK for 156 bytes
PSH, ACK for 176 bytes
RST, ACK
Run Code Online (Sandbox Code Playgroud)
就是这样.即使连接被客户端关闭,有没有办法获得这些接收的数据?
小智 -1
首先,对于这种类型的通信,切换到 UDP 而不是 TCP 可能是个好主意 - 这样无论发送者的状态如何,您都能够获取数据包。
假设 TCP 是唯一的选择 - 我建议使用同步调用:
Socket newConnection = listener.AcceptSocket();
newConnection.Receive(myBuffer, 0, length, SocketFlags.None);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |