5

.net ソケットを使用してクライアントからデータを受信する際に問題が発生しています。クライアントは TCP と通信しており、接続をすぐに閉じる前に 1 つまたは 2 つのパケットを送信しています。受付はこんな感じです。

Socket newConnection = listener.EndAccept(ar);
newConnection.BeginReceive(myBuffer,0, length, SocketFlags.None, Callback,null);

そして、実行はそれ以上進みません。beginReceive は、接続がリセットされたことを示す SocketException をすぐにスローします。受信したデータを取得できません。

これがwiresharkでのこの接続について私が見ているものです:

SYN // SYN, AKC // AKC
PSH, ACK for 156 bytes
PSH, ACK for 176 bytes
RST, ACK

以上です。クライアントによって接続が閉じられていても、この受信データを取得する手段はありますか?

4

1 に答える 1

-1

まず、このタイプの通信では、TCP の代わりに UDP に切り替えることをお勧めします。そうすれば、送信者の状態に関係なくパケットを取得できます。
TCP が唯一のオプションであると仮定すると、同期呼び出しを使用することをお勧めします。

Socket newConnection = listener.AcceptSocket();
newConnection.Receive(myBuffer, 0, length, SocketFlags.None);
于 2013-03-22T20:31:09.093 に答える