Winsock问题,客户端收到数据未来得及GetData,服务端就Close导致客户端出错。
- VB code
Option ExplicitPrivate Sub Form_Load()Winsock1.LocalPort = 8888Winsock1.ListenWinsock2.Connect "127.0.0.1", 8888End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)Winsock1.CloseWinsock1.Accept requestIDEnd SubPrivate Sub Winsock2_Connect() Winsock2.SendData "123"End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim a As String Winsock2.Close DoEvents Debug.Print Winsock1.BytesReceived '连接被对方断开后,缓冲区还有三个字节 Winsock1.GetData a 'GetDdata方法会出错' Winsock1.PeekData a 'PeekData也会出错 Debug.Print aEnd Sub
为何服务端主动关闭连接,客户端就不能GetData了?还有办法取出缓冲区的数据吗?
上次我用Winsock连接某Web服务器,对方把数据发过来马上就关闭了连接,我这边已经触发了Close事件之后还触发DataArrival,此时连接已经被关闭了,无法GetData。
[解决办法]