複雑なオブジェクトを両側に転送する非同期ソケット アプリケーションを作成しようとしています。
ここで例を使用しました...
マルチパッケージデータを送信しようとするまで、すべて問題ありません。転送されたデータに複数のパッケージが必要な場合、転送サーバー アプリケーションが中断され、サーバーがエラーなしで制御不能になっています...
何時間も後に解決策を見つけました。各 EndSend コールバックの後にクライアントの送信側ソケットを閉じると、問題は解決します。しかし、なぜこれが必要なのか理解できませんでしたか?または、状況に対する他の解決策はありますか?
私の(2)プロジェクトは上記の例と同じですが、 EndSend コールバック メソッドを次のように変更しただけです。
public void EndSendCallback(IAsyncResult result)
{
Status status = (Status)result.AsyncState;
int size = status.Socket.EndSend(result);
status.Socket.Close(); // <--------------- This line solved the situation
Console.Out.WriteLine("Send data: " + size + " bytes.");
Console.ReadLine();
allDone.Set();
}
ありがとう..