當前位置:編程學習大全網 - 編程軟體 - C++ 網絡編程問題?

C++ 網絡編程問題?

1)recv函數的執行流程: 當應用程序調用recv函數時,recv先等待s的發送緩沖中的數據被協議傳送完畢,如果協議在傳送s的發送緩沖中的數據時出現網絡錯誤,那麽recv函數返回SOCKET_ERROR,如果s的發送緩沖中沒有數據或者數據被協議成功發送完畢後,recv先檢查套接字s的接收緩沖區,如果s接收緩沖區中沒有數據或者協議正在接收數據,那麽recv就壹直等待,只到協議把數據接收完畢。當協議把數據接收完畢,recv函數就把s的接收緩沖中的數據copy到buf中(註意協議接收到的數據可能大於buf的長度,所以在這種情況下要調用幾次 recv函數才能把s的接收緩沖中的數據copy完。recv函數僅僅是copy數據,真正的接收數據是協議來完成的),recv函數返回其實際copy 的字節數。如果recv在copy時出錯,那麽它返回SOCKET_ERROR;如果recv函數在等待協議接收數據時網絡中斷了,那麽它返回0。

2)案例:

壹般是寫壹個線程專門處理 recv

while(true)

{

recv();

...

}

另外,不必要考慮什麽重傳。客戶端,服務端都要根據recv的內容來決定幹什麽。停止 recv,完全可以按自己的設計思路做,比如,recv到壹個"end"字符串時,就停止。然後做其它事情。

  • 上一篇:雷諾科雷嘉儀表盤詳解,科雷嘉儀表盤圖標大全
  • 下一篇:Arduino編程文檔
  • copyright 2024編程學習大全網