socket設置爲非阻塞模式

1,套接字的默認狀態是阻塞的。即當發出一個不能立即完成的套接字調用時,該進程將被投入睡眠,等待相應操作完成。

2,阻塞的套接字分爲下面四類:

  • 輸入操作:包括read、recv、recvfrom和recvmsg。
  • 輸出操作:包括write、send、sendto和sendmsg。
  • 接受外來連接,accept 函數。
  • 發起外出連接,connect 函數。

 3,將一個socket 設置成非阻塞模式,使用fcntl方法:

int flags;
if ((flags = fcntl(fd, F_GETFL, NULL)) < 0) {
    return -1;
}
if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
    return -1;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章