所以我一直在的任务是创造一个工具,为我们的质量保证部门,可以读取包脱线和重新消息正确地(他们不信任我们的日志...很长的故事).

该应用程序的通信我试图听取在对使用。净的TcpListener和TcpClient类通信。截获的包并不是一个问题(我在使用 SharpPcap).但是, 正确 重组的组成应用程序级别的消息被证明是稍微困难。

一些分组已经结束的一个信息和开始的下一个消息他们,我可想不出如何NetworkStream对象。净是能够告诉其中一个应用程序级别的消息结束和另一个开始。

我已经能够找出的任何分组包含端应用程序级别信息将有TCP头"切"(Push)标志开启。但是我不能找出如何。净知道在那里完全结束的消息是内部的,分组。

数据的一个分组,可能是这样的:

/></Message><Message><Header fromSystem=http://blah

如何在流知道只送结束 </Message> 该应用程序和储存的休息,直到剩余的消息是完整的?

有没有IP级设置标志,用于碎片。净插座有没有知识的应用水平协议。所以我觉得这非常令人烦恼。任何了解,将不胜感激。

有帮助吗?

解决方案

流不知道结束任何事情-这应该应用程序的一部分的协议。

NetworkStream 没有什么建成,它把数据转换成一个对象。是什么让你觉得它不会吗?什么样的代码,其管理使用NetworkStream看起来像什么?你也许做一些形式的XML反, 阅读 代码自动停止当达到的结束标记?

基本上:

  • 如果协议没有任何消息分隔或长前缀,它也许应该
  • NetworkStream 本身是非常不可能做什么聪明的-但如果你能告诉我们什么你在观察,我们也许可以作出什么事情。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top