一般的說法:socket (TCP) 用 recv 接收資料。如果核心快取區沒有資料就會阻塞。
那如果TCP連線沒有斷,但對方一直不發數據, recv 函數呼叫是不是會一直把程式阻塞住。
socket分為阻塞和非阻塞兩種,預設阻塞模式,可以透過參數設定修改為非阻塞;阻塞的意義:其實是TCP/IP協定棧中的緩衝區,(1)阻塞模式下:當buffer內沒有數據了,那麼就一直等待到有數據返回;(2)非阻塞模式下:沒有數據,會立即返回一個參數(例如python下是拋出一個異常)
可以用setsockopt()函數設定超時時間
socket分為阻塞和非阻塞兩種,預設阻塞模式,可以透過參數設定修改為非阻塞;
阻塞的意義:其實是TCP/IP協定棧中的緩衝區,
(1)阻塞模式下:當buffer內沒有數據了,那麼就一直等待到有數據返回;
(2)非阻塞模式下:沒有數據,會立即返回一個參數(例如python下是拋出一個異常)
可以用setsockopt()函數設定超時時間