日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows socket----select模型

發(fā)布時(shí)間:2025/3/14 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows socket----select模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一般我們的網(wǎng)絡(luò)編程都是用bind ,listen,accept,send/sendto,recv/recvfrom。在創(chuàng)建套接字的時(shí)候,是默認(rèn)使用阻塞模式的,每當(dāng)我們調(diào)用send/sendto等方法時(shí),套接字都會(huì)進(jìn)入阻塞狀態(tài),等到條件滿足后才返回。當(dāng)然為每個(gè)連接創(chuàng)建線程是個(gè)解決這個(gè)問題的好辦法。如:比較容易想到的一種服務(wù)器模型就是采用一個(gè)主線程,負(fù)責(zé)監(jiān)聽客戶端的連接請求,當(dāng)接收到某個(gè)客戶端的連接請求后,創(chuàng)建一個(gè)專門用于和該客戶端通信的套接字和一個(gè)輔助線程。以后該客戶端和服務(wù)器的交互都在這個(gè)輔助線程內(nèi)完成。這種方法比較直觀,程序非常簡單而且可移植性好,但是不能利用平臺(tái)相關(guān)的特性。例如,如果連接數(shù)增多的時(shí)候(成千上萬的連接),那么線程數(shù)成倍增長,操作系統(tǒng)忙于頻繁的線程間切換,而且大部分線程在其生命周期內(nèi)都是處于非活動(dòng)狀態(tài)的,這大大浪費(fèi)了系統(tǒng)的資源。

我們也可以通過ioctlsocket方法使用非阻塞模式套接字,但是這對程序員的代碼量是個(gè)考驗(yàn)。

?

Select(選擇)模型是Winsock中最常見的I/O模型。也是解決這二者問題的方案,和前兩者比較有很大的進(jìn)步。并且不會(huì)改變套接字的工作模式。

int select (int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout );

?該函數(shù)返回處于就緒態(tài)并且已經(jīng)被包含在fd_set結(jié)構(gòu)中的套接字總數(shù)。如果超時(shí)則返回0。

????第一個(gè)參數(shù)nfds被忽略。

????第二個(gè)參數(shù)readfds,可讀性套接字集合指針。

????第三個(gè)參數(shù)writefds,可寫性套接字集合指針。

????第四個(gè)參數(shù)exceptfds,檢查錯(cuò)誤套接字集合指針。

????第五個(gè)參數(shù)timeout,等待時(shí)間。

readfds,writefds,exceptfds三個(gè)參數(shù)至少有一個(gè)不為NULL。

typedef struct fd_set {u_int fd_count; /* how many are SET? */SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */ } fd_set;

?

fd_set是一個(gè)SOCKET隊(duì)列,以下宏可以對該隊(duì)列進(jìn)行操作:

FD_CLR( s, *set) 從隊(duì)列set刪除句柄s;

FD_ISSET( s, *set) 檢查句柄s是否存在與隊(duì)列set中;

FD_SET( s, *set )把句柄s添加到隊(duì)列set中;

FD_ZERO( *set ) 把set隊(duì)列初始化成空隊(duì)列.


Select模型工作流程:當(dāng)把我們要監(jiān)控的那些套接字根據(jù)各自的操作放入到readfds,writefds,exceptfds中,當(dāng)select方法返回后,我們通過判斷是否套接字還在那個(gè)readfds中,如果在,說明有數(shù)據(jù)可以讀,調(diào)用recv方法讀數(shù)據(jù)。其他集合一樣。以監(jiān)聽套接字為例:Select()--------->FD_ISSET(listenSocket,&readSet)------->acceptSocket=accept(listenSocket,(sockaddr*)&addr,&len); ?此時(shí)在調(diào)用accept就不會(huì)阻塞了。

?

轉(zhuǎn)載于:https://www.cnblogs.com/pangblog/p/3310449.html

總結(jié)

以上是生活随笔為你收集整理的windows socket----select模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 老司机午夜免费精品视频 | 久久只有这里有精品 | 亚洲男人天堂网站 | 国产911在线观看 | 中文字字幕在线 | 日韩网红少妇无码视频香港 | 一本视频| 波多野结衣激情视频 | 国产精品网址 | 欧美日本韩国一区二区三区 | 欧美视频在线播放 | 国产精品二区在线观看 | 一级大黄色片 | 亚洲码中文 | 91精品国产91久久久久久 | 国产成人福利视频 | 91大片免费看 | 天天干天天爽天天射 | 欧美另类69 | 91精品国产综合久久久蜜臀 | 黄瓜视频在线观看 | aa级黄色片 | 欧美少妇激情 | 欧美一区在线视频 | 性户外野战hd | 黄色操人视频 | 五月婷婷六月丁香综合 | 白洁av| 天天操夜夜骑 | 国产综合视频 | 超清纯大学生白嫩啪啪 | 91av网址| 毛片在线免费 | 91av在线看| 深夜在线视频 | 蜜臀精品 | 精品久久蜜桃 | 国产精品污www一区二区三区 | 欧美一级片免费在线观看 | 在线观看视频色 | 精品99999| 久久久久久欧美 | 蜜臀在线观看 | 欧美极品少妇xxxxⅹ免费视频 | 精品国产va久久久久久久 | a级网站在线观看 | 性色浪潮| 人人爽久久涩噜噜噜网站 | 在线黄色观看 | 欧美精品在线看 | 韩国三级丰满少妇高潮 | 免费av在线播放 | 暖暖av | 中文永久免费观看 | 国产精品自拍第一页 | 成人免费毛片果冻 | 国产做爰视频免费播放 | 国产精品激情偷乱一区二区∴ | 中文字幕在线播放第一页 | 亚洲欧美另类日韩 | 日本少妇xxxxx | 国产免费激情视频 | 伊人网视频在线 | 久久久久国产精品无码免费看 | 九色国产视频 | 伊人久久伊人 | 国产精品无码一区 | 午夜影院视频 | 肉色超薄丝袜脚交一区二区图片 | 中字幕视频在线永久在线观看免费 | av中文字幕在线播放 | 国产伦精品一区二区三区妓女下载 | 日韩伦理视频 | 香港台湾日本三级大全 | 九色在线播放 | 欧美三级黄色大片 | 香蕉大人久久国产成人av | 女女h百合无遮涩涩漫画软件 | 中国1级毛片 | www.成人av | 爱爱小视频免费看 | 成人在线免费视频 | 亚洲日日日 | 国产一区二区三区四区五区六区 | 日韩av在线播放观看 | 午夜小视频免费 | 激情五月五月婷婷 | 天堂伊人网 | 韩国三级丰满少妇高潮 | 精品夜夜澡人妻无码av | 欧美重口另类 | 97视频一区二区三区 | 黄色大片免费看 | 国产天堂av在线 | 欧美精品一区二区三区久久 | 一级日韩一级欧美 | 免费在线观看小视频 | 欧美专区 日韩专区 | www.毛片com|