所以我的任務是爲我們的QA部門創建一個工具,可以讀取數據包並正確重新組裝信息(他們不相信我們的日誌......長話短說)。.NET的NetworkStream如何在同一個數據包中分隔多個消息?
的應用,其通信我試圖偷聽使用.NET的的TcpListener和TcpClient的類進行通信。攔截數據包不是問題(我正在使用SharpPcap)。但是,正確將數據包重組爲應用程序級別的消息有點困難。
一些數據包有一個消息的結尾和下一個消息的開始,我無法弄清楚.NET中的NetworkStream對象如何能夠知道一個應用程序級消息何時結束,另一個開始。
我已經能夠弄清楚,包含一個應用級別消息的結束的任何分組將具有TCP報頭「PSH」(推)標誌接通。但我無法弄清楚.NET如何知道郵件的末尾在哪裏。
一個數據包的數據可能看起來像:
/></Message><Message><Header fromSystem=http://blah
如何流知道只發送高達</Message>
年底到應用程序和存儲的休息,直到消息的其餘部分是完整的?
有碎片整理的設置沒有IP位的標誌,和.NET插座沒有應用級協議的知識。所以我覺得這令人難以置信的煩惱。任何洞察力將不勝感激。
D'哦!我忘記了XML的反序列化。這正是發生的事情。你發現你的評論中的所有內容。謝謝你清理我的大腦屁。 :) – 2010-02-01 23:36:16