vb.net ソケット クラスを使用してリクエストを受信し、応答するサーバー アプリケーションをプログラミングしています。私は socket.receive を使用していますが、1 回目は問題ありませんが、2 回目は常に 0 バイトを返します。ポートにデータがあることをスニファで確認できます。通信の最初の 3 つのステップを正常に通過したことがわかり、ポート内のデータを確認できますが、socket.receive 命令は常に 0 バイトを返します (1 回目と 2 回目は機能する場合がありますが、最初は 0 を返します) 見つかった多くの推奨事項に従いましたが、何も機能しません。たとえば、socket.receive 命令の前に socket.available を使用し、socket.receive をサイクルに入れて完全なメッセージを待機し、ソケットバッファ。これは、socket.receive 命令のコードの一部です。
Try
While True
If vConnectionSocket.Available > 0 Then
vNumOfBytesReceived = vConnectionSocket.Receive(Data, 0, vMessageLength, SocketFlags.None)
Array.Copy(Data, indbuf, vClientMessage, indbuf, vNumOfBytesReceived)
If vStrMsg.IndexOf(ChrW(3)) > -1 Then
Exit While
End If
Array.Clear(Data, 0, Data.Length)
End If
End While
Catch ex As SocketException
If vConnectionSocket.Connected Then vConnectionSocket.Close()
MessageBox.Show("Receiving error >" + ex.ErrorCode.ToString + ":" + ex.Message.ToString)
Exit Sub
End Try
助けていただければ幸いです。