まず、C# でコーディングしています。ソケットを介してさまざまなサイズのデータをデバイスに書き込んでいます。すべてのデータの処理が完了すると、デバイスはエラー コード/完了メッセージを書き戻すため、データを書き込んだ後、ソケットから読み取りたいと思います。現在、私は次のようなものを持っています:
byte[] resultErrorCode = new byte[1];
resultErrorCode[0] = 255;
while (resultErrorCode[0] == 255)
{
try
{
ReadFromSocket(ref resultErrorCode);
}
catch (Exception)
{
}
}
Console.WriteLine(ErrorList[resultErrorCode[0] - 48]);
他の場所で使用ReadFromSocket
しているので、正常に動作していることを知っています。最終的には、(自分のマシンで) から接続しているポートがランダムなポートに変更されます。これが原因で相手側のファームウェアの接続が悪いのだと思います。そのため、反対側にデータを書き込むと、接続した元のポートにデータを書き込もうとしますが、何度か読み込もうとすると、接続ポートが変更されます。
完了コマンドを受信するまでソケットから連続して読み取るにはどうすればよいですか? 私の最小のテストファイルでは、かなり一貫して1分13秒かかるため、ループに何か問題があることがわかっている場合。ループを削除し、コードを 1 分 15 秒間スリープ状態にして、コードをテストしました。再開すると、期待している完了コマンドを正常に読み取ります。誰かアドバイスはありますか?