TCP를 사용하여 파일을 보내는 보내는 응용 프로그램이 있습니다. 때로는 이러한 파일에는 하나의 메시지가 포함되며 다른 경우에는 파일에 여러 메시지가 포함될 수 있습니다. 불행히도, 나는 보내는 응용 프로그램의 코드에 액세스 할 수 없습니다.다른 메시지가 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)
어떤 도움에 미리 감사드립니다.
나는 빠른 테스트를했고, Socket.Select가 정확하게 내가 찾고있는 것 같다. 고마워요, 굉장 해요! – Tim