社区
网络编程
帖子详情
用select怎么改变最大监听用户数,设置FD_SETSIZE吗?
Megadeth
2004-10-15 10:15:12
我用的库是unix下也可以用的,win上的FD_SETSIZE似乎只有64,怎么改变它的值?比如让它增加到1024,或2048
...全文
1545
16
打赏
收藏
用select怎么改变最大监听用户数,设置FD_SETSIZE吗?
我用的库是unix下也可以用的,win上的FD_SETSIZE似乎只有64,怎么改变它的值?比如让它增加到1024,或2048
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Megadeth
2004-10-24
打赏
举报
回复
to sharkhuang(爱情和程序都读不懂) :
不能改是指linux还是windows?
还是两者都不行啊?
sharkhuang
2004-10-24
打赏
举报
回复
不能改的。除非你编译内核。可以用poll
Megadeth
2004-10-24
打赏
举报
回复
好久没来,不好意思
to gdy119(中国制造)
难道多线埕就不用FD_SETSIZE,哈哈
zengkun100
2004-10-20
打赏
举报
回复
老大,你还不结贴哟!
gdy119
2004-10-20
打赏
举报
回复
#ifdef FD_SIZE
#undef FD_SIZE
#define FD_SIZE 2048
#include <winsock2.h>
可能是这样写的吧。
//=====================================================
好象有最大限制,至于修改数量后能不能运行我还不知道,
如果真是很多客户可以考虑用多线埕
zengkun100
2004-10-18
打赏
举报
回复
Also, the underlying provider imposes an arbitrary maximum fd_set size, which typically is 1024 but is not guaranteed to be.
Megadeth
2004-10-18
打赏
举报
回复
to flybusflybus(风)
谢谢,你的这段话:
FD_SETSIZE as a particular value has no effect on the actual number of sockets provided by a Windows Sockets service provider.
的意思是说FD_SETSIZE在wndows上没有意义吗?那就是说根本没有必要修改了?!
getrlimit可以修改linux的得fd_setsize的话,要怎么修改,那其他人说的方法还有用吗?
aleng1983
2004-10-18
打赏
举报
回复
呵呵
CsLover
2004-10-18
打赏
举报
回复
Linux下的宏定义可能在in/in.h里面吧 或是socket/socket.h
find一下 应该有的!
原理一样的
sevencat
2004-10-18
打赏
举报
回复
#ifdef FD_SIZE
#undef FD_SIZE
#define FD_SIZE 2048
#include <winsock2.h>
可能是这样写的吧。
zengkun100
2004-10-17
打赏
举报
回复
在WINSOCK2.H中定义FD_SETSIZE为64,你在包含WINSOCK2.H之前,#define FD_SETSIZE 1024
flybusflybus
2004-10-17
打赏
举报
回复
FD_SETSIZE as a particular value has no effect on the actual number of sockets provided by a Windows Sockets service provider.
对于linux,你用命令ulimit -a看看限制是多少,硬设置通过命令可以修改,程序通过getrlimit可以修改
Megadeth
2004-10-17
打赏
举报
回复
谢谢CsLover(执迷者) ,那如果是在linux下呢?要怎么修改?
btbq
2004-10-16
打赏
举报
回复
up
CsLover
2004-10-15
打赏
举报
回复
大胆修改库文件中的宏定义吧 大于64的值是允许的
chqu18
2004-10-15
打赏
举报
回复
好象unix下监听用户数大些,比win下的大
但如果增加还没有试过
帮你顶
select
,poll,epoll的区别 各自支持的
最大
fd
数上限以及原因
1
FD
_
SET
SIZE
不够问题排查
升级php 7.4的时候发现有warning报错,报错内容大致是 You MUST recompile PHP with a larger value of
FD
_
SET
SIZE
.... 下载 php 7.4.16 源码进行排查。 grep "You MUST recompile PHP with a larger value" -rn * 找到报错的位置 main/network.c:1174: “You MUST recompile PHP with a larger value of
FD
_SE
select
() 模型3大常见陷阱:从
FD
_
SET
SIZE
限制到EINTR信号处理
本文深入剖析
select
()函数在网络编程中的三大常见陷阱:
FD
_
SET
SIZE
的文件描述符数量限制、
fd
_
set
被内核修改的特性,以及EINTR信号中断处理。通过实际代码示例和解决方案,帮助开发者避免这些潜在问题,构建更健壮的网络应用。特别针对
FD
_
SET
等关键操作提供了优化建议和最佳实践。
select
函数以及
FD
_ZERO、
FD
_
SET
、
FD
_CLR、
FD
_IS
SET
select
()函数以及
FD
_ZERO、
FD
_
SET
、
FD
_CLR、
FD
_IS
SET
select
函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供
select
函数来实现多路复用输入/输出模型,原型: #include #include int
select
(int max
fd
,
fd
_
set
*rdse
C/C++
select
fd
_
set
解释
win下面
FD
_
SET
就是检查SOCKET在数组中是否存在,如果不存在,那么就插入到数组最后。而
FD
_CLR(
fd
,
set
)是把
fd
后面的东西往前拷贝,然后计数减1.
FD
_ZERO仅仅是把计数置为0(这个要注意!很明了,一个计数的
fd
_count,另一个就是SOCKET数组。其中,
FD
_
SET
SIZE
是64.(具体可以去查看vs的代码)根据IO状态修改
fd
_
set
的内容,由此来通知执行了
select
()的进程哪一socket或文件可读。
select
()机制中提供一
fd
_
set
的。
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章