日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩免费在线视频 | 一区二区三区精品久久久 | 日本xxxx人 | 亚洲国产免费看 | 日韩精品――色哟哟 | 国产又色又爽又黄的 | 日韩精彩视频在线观看 | 四虎一级片 | 欧美人体一区二区三区 | 色综合免费视频 | 欧美性猛交aaaa片黑人 | 日本成人在线免费观看 | 黄色三级视频在线观看 | 在线观看成人动漫 | 欧美日韩中 | 999久久精品| 老司机午夜影院 | 亚洲一级特黄 | 国产做爰高潮呻吟视频 | 久久三级 | 青在线视频 | 欧美大波大乳巨大乳 | 四虎影视永久免费观看 | 日本偷偷操 | 男同av在线观看一区二区三区 | 中文字幕亚洲乱码 | 黄色日韩| 欲色影音 | 国产熟妇另类久久久久 | 日韩有码一区 | 97国产精东麻豆人妻电影 | 天堂аⅴ在线最新版在线 | 真人抽搐一进一出视频 | 久久久88| 中文字幕在线视频一区二区三区 | 成人毛片在线播放 | 女攻总攻大胸奶汁(高h) | 国产天天骚| 91视频在线免费观看 | www.人人干 | 福利片一区二区 | 中文字幕一区二区三区门四区五区 | 宅男深夜视频 | 黄色av网站在线观看 | 久久香蕉网站 | 欧美日韩午夜精品 | 啪啪免费视频网站 | 91在线观看免费高清完整版在线观看 | 日韩欧美黄色片 | 水牛影视av一区二区免费 | 日韩中文在线视频 | 自拍1页 | 天天爽影院 | 亚洲精品视频播放 | 在线cao| 爱情岛亚洲论坛入口 | 中文日韩在线观看 | 西西人体大胆4444ww张筱雨 | 国产福利在线免费观看 | 97在线视频免费观看 | 一区二区日韩欧美 | 天天舔天天插 | 亚洲免费区 | 欧美成年人网站 | 亚洲福利在线视频 | 深夜福利一区二区 | 在线看成人片 | 日本在线视频免费观看 | 亚洲成av人片在线观看无码 | 国产人妻aⅴ色偷 | 欧美va视频| 欧美中文 | 中文字幕免费 | 色偷偷免费费视频在线 | 91av视频免费观看 | 快播91| 91极品视频 | 四川丰满妇女毛片四川话 | 国产麻豆免费视频 | 日本少妇裸体做爰 | 欧美网站在线观看 | 97超碰国产精品无码蜜芽 | 亚洲美女视频 | 一区二区三区国产精品视频 | 69黄色片 | 超碰干| free性满足hd国产精品久 | 久久人体视频 | 国产麻豆天美果冻无码视频 | 亚洲免费影院 | 熟女一区二区三区四区 | 欧美蜜桃视频 | 日韩一二在线 | 黄色网页免费看 | 亚洲精品免费在线观看视频 | 性欧美成人播放77777 | 亚洲免费观看在线 | 一本久道久久综合无码中文 | 成人免费激情视频 |