私はちょうど.Net(Core 2)のUDPClientで作業を始めました。受信時に実際に「リモート接続がクローズされました」という例外がスローされることに気付きました。 UDPはリモートを気にしないので、これはあまり意味がありません。なぜUDPソケットのリモートクローズド接続例外がありますか?
私はアプリケーションからUDPデータを受け取ります。私は制御できません。私は短期でやっていることはこれです:
if(MyUDPClient.Available > 0)
{
IPEndPoint Point = null;
Byte[] Data = MyUDPClient.Receive(ref point);
//[do something with data]
}
ただしの存続期間中に(私はデータを受信しながら、上記のループで行われます)アプリケーションと、受信するための呼び出しは、リモートが閉じられた例外をスローすることができます接続(それはなかった...)。
なぜこの例外は何か、そしておそらく回避策であると私は説明できますか?私が望むのは、データを受信して、それがオリジンドしたエンドポイントを特定することだけです。
最小コードサンプルを入力してください。 MyUDPClientの初期化方法を見ずに、問題の内容を推測することしかできません。デフォルトのコンストラクタを使用してMyUDPClientを構築した可能性があります。つまり、ローカルポート/ローカルエンドポイントを指定していません。この場合、MyUDPClient.Availableは使用可能なデータを検索する場所がわからないため失敗します。しかし、あなたは正しいですが、リモコンが接続を閉じたという例外は非常に誤解を招きます。おそらくUDPClientがローカルポートにバインドされていないことを意味します。 – Xaver
UDPソケットは、ソケットを閉じたエンドポイントにデータを送信しようとした後、このエラーをスローすることがわかりました。あなたのUDPSocketは読み込むデータを持っているかもしれませんが、最後のsendが成功しなかったので例外がスローされます。 Control-Flagではこれを無視できます。私は答えを追加します。 –