c++ - socket (TCP) 用 recv 接收資料阻塞問題?
扔个三星炸死你
扔个三星炸死你 2017-06-10 09:48:28
0
2
1293

一般的說法:socket (TCP) 用 recv 接收資料。如果核心快取區沒有資料就會阻塞。

那如果TCP連線沒有斷,但對方一直不發數據, recv 函數呼叫是不是會一直把程式阻塞住。

扔个三星炸死你
扔个三星炸死你

全部回覆(2)
洪涛

socket分為阻塞和非阻塞兩種,預設阻塞模式,可以透過參數設定修改為非阻塞;
阻塞的意義:其實是TCP/IP協定棧中的緩衝區,
(1)阻塞模式下:當buffer內沒有數據了,那麼就一直等待到有數據返回;
(2)非阻塞模式下:沒有數據,會立即返回一個參數(例如python下是拋出一個異常)

大家讲道理

可以用setsockopt()函數設定超時時間

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板