日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET

發布時間:2025/3/11 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux socket非阻塞編程時常見到如下的code:

socket ? s;

.....

fd_set ? set;

.....

struct timeval tv;

while(1)

{

FD_ZERO(&set);//將你的套節字集合清空

FD_SET(s, ? &set);//加入你感興趣的套節字到集合,這里是一個讀數據的套節字s

tv.tv_sec = 3;

tv.tv_usec = 0;

select(maxfd+1,NULL,&set,NULL,&tv);//檢查套節字是否可讀,

//很多情況下就是是否有數據(注意,只是說很多情況)

//這里select是否出錯沒有寫

// timeout 時間為3s

if(FD_ISSET(s, ? &set) ? //檢查s是否在這個集合里面,

{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //select將更新這個集合,把其中不可讀的套節字去掉

//只保留符合條件的套節字在這個集合里面

recv(s,...);

}

//do ? something ? here

}

(1)FD_ZERO(&set);則set用位表示是0000,0000。

(2)若fd=5,執行FD_SET(fd,&set);后set變為0001,0000(第5位置為1)

(3)若再加入fd=2,fd=1,則set變為0001,0011

(4)執行select(6,0,&set,0,&tv)阻塞等待

(5)若fd=5發生可讀事件,則select返回,此時set變為0000,0011。注意:沒有事件發生的fd=5被清空。

總結

以上是生活随笔為你收集整理的linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。