我有一个使用 TCP 发送文件的发送应用程序。有时这些文件包含一条消息,有时文件可能包含多条消息。不幸的是,我无权访问发送应用程序的代码。
我正在编辑旧代码以接收这些消息。当发送一条消息时,我已经设法让旧版应用程序接受文件。但是,由于我在收到一条消息后断开了套接字,因此发件人给出了断开连接错误。
我写了一个小过程来帮助确定是否还有其他消息。如果它有效,我将把它合并到代码中,但结果好坏参半:
Dim check(1) As Byte
If (handler.Receive(check, SocketFlags.Peek) > 0) Then
Dim bytesRec As Integer
ReDim bytes(1024)
bytesRec = handler.Receive(bytes)
End If
如果有另一条消息正在发送,这将检测到它。但是,如果文件只有一条消息,它会锁定接收,直到我发送另一个文件,然后它被接受。
有没有办法判断如果流为空,是否还有另一条消息未锁定?
我不会发布所有接受消息的代码,因为它是一个遗留的老鼠窝,但总体思路如下:
s2 = CType(ar.AsyncState, Socket)
handler = s2.EndAccept(ar)
bytes = New Byte(1024) {}
Dim bytesRec As Integer = handler.Receive(bytes)
' Send Ack/Nak.
numAckBytesSent = handler.Send(myByte)
提前感谢您的任何帮助。