Windows下的select返回-1的问题

szn_409 2016-02-24 09:09:19
当select()返回-1的时候,是否会将其第二个,第三个,第四个参数重新清空掉?
也就是说如代码:select(3, &SetRecv, &SetSend, NULL, &TimeVal);
当此代码为TCP客户端的代码,并且在select前服务器断掉与客户端的连接,那么此时SetRecv和SetSend是否不会被清0?
...全文
541 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
szn_409 2016-02-26
  • 打赏
  • 举报
回复
引用 3 楼 lianshaohua 的回复:
[quote=引用 2 楼 szn_409 的回复:] [quote=引用 1 楼 lianshaohua 的回复:] select每次返回都会重置读、写、异常fd_set集合;所以每次进入select前都要填充要监测的fd_set集合(读、写) select第一个参数在windows下貌似应该为最大的socket id +1;windows下的socket id好像不是从1开始的,
我的意思是:TCP协议,当服务器主动断开与客户端的联系的时候,那么客户端的select函数会对传入的读写描述集合进行重置吗[/quote] 试一下相信印象更深刻[/quote] 我试过了 结果是不重置的,想求证一下对不对
赵4老师 2016-02-26
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
ztenv 版主 2016-02-25
  • 打赏
  • 举报
回复
select每次返回都会重置读、写、异常fd_set集合;所以每次进入select前都要填充要监测的fd_set集合(读、写)

select第一个参数在windows下貌似应该为最大的socket id +1;windows下的socket id好像不是从1开始的,
ztenv 版主 2016-02-25
  • 打赏
  • 举报
回复
引用 2 楼 szn_409 的回复:
[quote=引用 1 楼 lianshaohua 的回复:] select每次返回都会重置读、写、异常fd_set集合;所以每次进入select前都要填充要监测的fd_set集合(读、写) select第一个参数在windows下貌似应该为最大的socket id +1;windows下的socket id好像不是从1开始的,
我的意思是:TCP协议,当服务器主动断开与客户端的联系的时候,那么客户端的select函数会对传入的读写描述集合进行重置吗[/quote] 试一下相信印象更深刻
szn_409 2016-02-25
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
select每次返回都会重置读、写、异常fd_set集合;所以每次进入select前都要填充要监测的fd_set集合(读、写) select第一个参数在windows下貌似应该为最大的socket id +1;windows下的socket id好像不是从1开始的,
我的意思是:TCP协议,当服务器主动断开与客户端的联系的时候,那么客户端的select函数会对传入的读写描述集合进行重置吗

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧