tcpclient - 如何保证响应是为了正确的异步命令?

时间:2015-08-13 16:20:52

标签: c# tcpclient

请原谅我,如果这被覆盖在某个地方,但我的谷歌技能已经失败了,而且似乎并没有任何涵盖这个特定问题的东西。我第一次使用tcpclient(TcpClient和带StreamReader和StreamWriter的Ne​​tworkStream)以及我试图理解的一些错综复杂的东西。

背景

我正在与打印机通信,打开无限循环的网络流阅读器并解析传入的数据。向外命令是从ui上的用户输入异步发送的。到目前为止一切都很好。

许多示例显示您发送数据然后等待响应,在大多数情况下都很好。我的问题是打印机可以随机向我发送我必须响应的数据(墨水/故障等),并且我异步发送命令。我也很偏执,它可能并不总是按顺序处理命令。

我知道预期响应的大小,我总是可以可靠地将命令从流中分离出来(它们总是使用开始和结束字符)。问题在于很多响应具有相同的大小和格式。

我最初的想法是创建一个传出命令的队列,当响应返回时,我可以检查它是否与队列中的第一个匹配,以查看它是否与预期的返回格式匹配,如果它没有,则检查其他格式。

如果它没有匹配队列中的任何内容,请将其视为新的回复并尝试找出它可能发送给我的内容。

问题

我想简单地说,我的假设是否正确? (我还没有经历过这些问题,但我不想在制作中感到惊讶)并且是否有任何普遍接受的方法来处理这种情况?

由于

0 个答案:

没有答案