首先,我在 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 秒来测试代码。当它恢复时,它成功读取了我期望的完成命令。有人有建议吗?