2
我正在編寫一個MFC應用程序來實現客戶端/服務器方案並使用Win套接字。我可以發送/接收一條小消息,例如「你好」。另外,我嘗試了大小爲1000的緩衝區。但是,當我進一步增加它的大小時,它只是掛起。甚至不會拋出任何錯誤。Winsock發送recv緩衝區大小
關於問題可能是什麼的任何想法?對於可以在winsock中發送/接收的緩衝區的最大大小是否有任何限制?我是一個新手,並且從未使用過winsock。
我正在編寫一個MFC應用程序來實現客戶端/服務器方案並使用Win套接字。我可以發送/接收一條小消息,例如「你好」。另外,我嘗試了大小爲1000的緩衝區。但是,當我進一步增加它的大小時,它只是掛起。甚至不會拋出任何錯誤。Winsock發送recv緩衝區大小
關於問題可能是什麼的任何想法?對於可以在winsock中發送/接收的緩衝區的最大大小是否有任何限制?我是一個新手,並且從未使用過winsock。
以下comment由icabod回答了這個問題。
「您收到的數據的一部分,那麼剩餘部分的事實,在我answer to this question覆蓋它基本上是TCP的工作方式 - icabod」
一個TCP報文可以有最大大小爲64K 。嘗試發送這種大小的數據包很可能會導致數據包丟失。然而,大約1000個字節的數據包應該不是問題。請張貼一些代碼。 – Matt 2013-04-04 21:19:30
我嘗試了2000字節,現在它工作正常。沒有改變這個代碼。但是,對於更大的數據,例如9000字節,它會失敗。此外,當它掛起時,我在服務器應用程序的輸出窗口上看到「線程'Win32線程'(0x1bc0)已退出代碼0(0x0)」。 – pree 2013-04-04 23:06:08
明白了:)我的代碼中存在一些小錯誤,並且我實際上並沒有從服務器端收到數據。我正在等待所有數據到達。現在我可以在多次運行中收到數據。 – pree 2013-04-05 00:25:52