簡體   English   中英

iOS NSInputStream

[英]IOS NSInputStream

使用NSInputStream時出現問題。 我有連接到服務器的客戶端應用程序,然后服務器將開始以每秒大約1條消息的方式反復通過TCP向我的客戶端應用程序發送消息。 服務器只是向客戶端廣播消息,消息是xml格式。 服務器將消息作為一個數據包發送。

現在的問題是,當我從NSInputStream讀取字節時,數據被截斷了,這意味着不是收到1條完整消息,而是不時收到2條單獨的數據(部分xml)。 我無法調試,因為當我從NSInputStream讀取數據字節時已經發生了。

我使用Wireshark來分析我收到的每個數據包,並在發生數據時也將其截斷,因為TCP會將部分數據重新傳輸到我的客戶端。 我嘗試記錄每個部分數據字節,部分數據的總和始終在1600字節左右。

我不知道他們是如何設計和實現服務器端的,但是我確實知道有很多人連接到該服務器並不斷從該服務器獲取廣播消息。

有人遇到這個問題嗎? 有人可以幫忙嗎? 數據是否可能超過最大大小並被拆分?

這本身不是問題。 它是TCP和NSInputStream設計的一部分。 您可能會收到部分消息。 處理這個事實是您的工作,等待直到收到完整的消息,然后處理完成的消息。

1600字節有點奇怪。 我希望有1500個字節,因為這是最大的合法以太網數據包(或者尤其是1472左右的某個地方,這是一個非常常見的MTU,減去一些報頭)。 或者由於NSInputStream緩沖,我可能期望1k或4k的倍數。 但這無關緊要。 您必須處理這樣一個事實,即您不一定會在其邊界處收到消息。

暫無
暫無

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

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