[英]Tcp xml communication C#
我需要使用 xml 消息通過 tcp 建立雙向通信。 實現這一點的最佳方法是什么? 我不確定消息是否會以\\n
結尾。 我曾想過使用TcpClient.GetStream()
讀數據流byte
后, byte
和檢查一個完整的XML消息是否已經到來。 但這聽起來應該可以做得更好。
重要信息:
\\n
結束消息如果我理解正確,您收到的規范表明:
在這種情況下,找出(有效)xml 消息在哪里結束的唯一方法是解析其結構並找到根節點的結束元素。 將 xml 聲明<?xml ...?>
視為消息分隔符是不可靠的,除非保證這包含在每個 xml 消息中。
如果我是你,我會嘗試說服對方這不是一個可靠的消息協議——它所需要的只是一個損壞的 xml 文件(例如缺少一個結束元素),你的程序將無法處理任何后續該連接上的消息。
否則,我將使用帶有ConformanceLevel.Fragment
的XmlReader
讀取下一個開始元素並使用其ReadSubtree()
功能來獲取單個消息。 然后可以將此“子樹閱讀器”提供給XmlDocument.Load()
以進行進一步處理。 XmlReader
會破壞除第一條消息之外的所有 xml 聲明( <?xml ...?>
),因此您需要在XmlReader
和流之間使用TextReader
來XmlReader
這些。
所有這一切只是為了“讓它發揮作用”,遠非理想。 如果他們只是簡單地添加一個固定長度的標頭或使用眾所周知的協議,您將擁有一個代碼更少的更可靠的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.