簡體   English   中英

如何使用XML協議檢測網絡流中的“ EOF”?

[英]How to detect “EOF” in a network stream using XML protocol?

我想設計和實現基於xml的網絡協議。 我有兩台運行Java應用程序的網絡機。 一個(客戶端C)將XML工作表發送給另一個(服務器S)。 S處理一些數據,並將另一個XML表發送回C。

現在,我想使用SAX作為XML解析器。 要終止SAX的parse()例程,必須明確定義流的末尾。 在經典的文件讀取方案中,這是微不足道的。

起初,我嘗試終止襪子以指示EOS,但隨后無法再發送任何答案。

在這個stackoverflow問題中,提出了類似的問題。 似乎存在多種解決方案:

  • 讀完請求XML的根元素后,SAX將停止(通過SAXException )。 對我來說,依靠異常終止算法似乎很糟糕……我認為這是不好的編程風格,不是嗎?
  • 我計算要傳輸到服務器的字節數,並在XML文件之前發送此數字。 但是然后我需要預先創建XML以計算大小。 在我眼里也不是最佳實踐。

因此,您能給我一個提示,如何建立盡可能簡單和優雅的外觀嗎?

如果只是想在到達文檔末尾時停止解析,則可以檢測到在文檔的根元素上調用了endElement() 當然,您需要能夠識別根元素,但這應該很容易做到,只需與當前深度保持一致即可。

誠然,這無法檢測出流中是否有其他信息,但是在大多數情況下,我認為這不會成為問題。

使用HTTP來實現傳輸層,它是一個標准,在1.1版本中,它支持KeepAlive來完成您描述的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM