一千萬個為什麽

搜索

C#異步beginsend方法

我是套接字編程的新手。我正在開發一個服務器客戶端應用程序。
我正在使用異步tcp ip socket。但現在我遇到了一個問題。在我的客戶端,我通過beginReceive方法通過2kb字節數組接收數據。如果數據大小低於或等於2 kb,它可以正常工作,但當數據大小超過2kb範圍時出現問題。
請給我一些解決方案。

最佳答案

這是完全正常的 - 你不應該期望在一次調用中獲得所有數據,無論你是使用同步還是異步調用,以及你是否有大量數據。

您應該繼續閱讀,直到讀取呼叫表明沒有更多數據 - 或者直到您獲得所需的一切。如果您的協議在連接上需要多個請求/響應,則應該為每條消息設置長度前綴,以便另一方知道要讀取多少內容,或者使用某種分隔符來指示消息的結束。長度前綴在適合時更容易,但它不容易支持流式傳輸 - 你必須以長度為前綴的“塊”和最後一個塊來指示你何時完成。

轉載註明原文: C#異步beginsend方法