搜尋

首頁  >  問答  >  主體

c++ - socket (TCP) 用 recv 接收資料阻塞問題?

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

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

扔个三星炸死你扔个三星炸死你2812 天前1485

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-06-10 09:50:28

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:50:28

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

    回覆
    0
  • 取消回覆