社区
网络编程
帖子详情
请高手给我讲解一下socket中select到底是怎么回事,需要注意和设置什么?
waterbao
2006-03-30 09:40:08
请高手给我讲解一下socket中select到底是怎么回事,需要注意和设置什么?
...全文
231
5
打赏
收藏
请高手给我讲解一下socket中select到底是怎么回事,需要注意和设置什么?
请高手给我讲解一下socket中select到底是怎么回事,需要注意和设置什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yinqing_yx
2006-04-06
打赏
举报
回复
我的笔记 共享 ^_^
~~select~~
int selete ( int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds,const struct timeval FAR * timeout );
param:
第一个参数nfds会被忽略,提供此参数只是为了保持兼容。
从根本上说,fd_set数据类型代表着一系列特定套接字的集合。
readfds: 检查可读性(包括对象套接字的符合条件:)
▲ 有数据可以读入
▲ 连接已经关闭、重设或中止
▲ 假如已调用了listen,而且一个连接正在建立,那么accept函数调用会成功
writefds: 检查可写性(包括对象套接字的符合条件:)
▲ 有数据可以发出
▲ 如果已完成了对一个非锁定连接调用的处理,连接就会成功
exceptfds: 用于例外数据(包括对象套接字的符合条件:)
▲ 如果已完成了对一个非锁定连接调用的处理,连接尝试就会失败
▲ 有带外(OOB)数据可供读取
timeout: 用于决定selete最多等待I/O操作完成多久的时间。如为空指针,那么其调用会无限期地“锁定”或停顿下去,直到至少有一个描述符号符合指定的条件后结束。
对fd_set进行处理与检查的宏:
▲ FD_CLR (s, *set) 从set中删除套接字s
▲ FD_ISSET ( s, *set) 检查s是不是set的成员
▲ FD_SET ( s, *set) 将套接字s加入集合set
▲ FD_ZERO ( s, *set) 将set初始化成空集合
selete操作步骤:
▲ 使用ZERO,初始化自己感兴趣的每个集合
▲ 使用SET,将套接字句柄分配给自己感兴趣的每个集合
▲ 调用selete方法
▲ 根据slelete返回值,判断哪写套接字存在着尚未完成的I/O操作(使用ISSET)。
▲ 知道了每个集合中的“待决”的I/O操作后,对I/O进行处理后返回步骤1。
danscort2000
2006-04-06
打赏
举报
回复
select最初来自BSD SOCKET
在UNIX系统中,判断一组套接字中是否有可读或者可写的套接字
使用SELECT可以让一个线程对应处理多个套接字
在WINDOWS系统中,则一次只能对应一个套接字,经常被用来测试处套接字是否已经被关闭或者连接被中断
oyljerry
2006-03-30
打赏
举报
回复
select()
简述:
确定一个或多个套接口的状态,如需要则等待。
#include <winsock.h>
int PASCAL FAR select( int nfds, fd_set FAR* readfds, fd_set FAR* writefds, fd_set FAR* exceptfds, const struct timeval FAR* timeout);
nfds:本参数忽略,仅起到兼容作用。
readfds:(可选)指针,指向一组等待可读性检查的套接口。
writefds:(可选)指针,指向一组等待可写性检查的套接口。
exceptfds:(可选)指针,指向一组等待错误检查的套接口。
timeout:select()最多等待时间,对阻塞操作则为NULL。
waterbao
2006-03-30
打赏
举报
回复
UP
zblaoshu1979
2006-03-30
打赏
举报
回复
学习
Socket
的基本操作函数
socket
()、bind()、listen()、connect()、accept()、recv()、send()、
select
()、close()
本文详细介绍了
Socket
编程的基础操作,包括
socket
(), bind(), listen(), connect(), accept(), recv(), send()等关键函数的使用方法及
注意
事项,还
讲解
了
select
模型的理解与应用。
socket
select
函数的详细
讲解
本文详细介绍了Windows和Linux环境下
select
函数的使用方法,包括参数解释、宏操作、返回值及错误处理等内容,并提供了具体示例。
socket
编程之
select
本文详细介绍了
socket
的阻塞和非阻塞模式,重点
讲解
了非阻塞模式下的
select
函数,包括其工作原理、参数、返回值和相关宏。通过示例代码展示了如何使用
select
处理文件描述符集合,以及如何处理带外数据。同时,讨论了
select
模型在处理多客户问题
中
的应用,展示了服务器端和客户端的代码实现。最后,指出了
select
模型的局限性,如文件描述符数量限制和线性扫描效率问题。
网络编程——C++实现
socket
通信(TCP)高并发之
select
模式
本文深入探讨了TCP连接与释放过程,重点
讲解
了基于C++的
socket
通信
中
Select
并发模型的实现细节。通过具体示例代码,展示了如何利用
Select
函数及其辅助函数进行多客户端连接的高效管理。
python
socket
connect 超时_如何
设置
socket
的Connect超时
本文介绍了在Python
中
如何通过非阻塞模式和
select
函数为
socket
连接
设置
超时。详细
讲解
了
设置
非阻塞模式、调用connect、使用
select
检查连接状态的步骤,并提供了示例代码。该方法适用于Linux和Windows,适用于网络编程
中
需要
控制connect超时的场景。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章