大师们帮帮忙啊,socket select的问题?

leeyvie_ping 2011-07-12 03:57:38
我刚开始学socket,在网上找了个例子
可是select报10038的错误,代码如下

/* 把集合清空 */
FD_ZERO(&rfds);
/* 把标准输入句柄0加入到集合中 */
FD_SET(0, &rfds);
maxfd = 0;
/* 把当前连接句柄sockfd加入到集合中 */
FD_SET(sockfd, &rfds);
if (sockfd > maxfd)
maxfd = sockfd;
/* 设置最大等待时间 */
tv.tv_sec = 0;
tv.tv_usec = 0;
/* 开始等待 */
retval = select(maxfd + 1, &rfds, 0, 0, &tv);

但是我把FD_SET(0, &rfds);注释掉了却又可以了 不知道为甚么,我是个新手还希望大家帮帮忙。
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihaoyanbo 2011-07-27
  • 打赏
  • 举报
回复
/* 把标准输入句柄0加入到集合中 */
FD_SET(0, &rfds);,这句不要写
lcyw 2011-07-13
  • 打赏
  • 举报
回复
但是我把FD_SET(0, &rfds);


你加这个是想刚什么?
Eleven 2011-07-13
  • 打赏
  • 举报
回复
FD_SET(0, &rfds);
------------------
干嘛写这个呢?0应该是不合法的SOCKET句柄值
leeyvie_ping 2011-07-13
  • 打赏
  • 举报
回复
咋没人帮我呢 大师们不吝赐教啊
leeyvie_ping 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
FD_SET(0, &rfds);
------------------
干嘛写这个呢?0应该是不合法的SOCKET句柄值
[/Quote]

获得键盘的输入的,要不然没法进行键盘输入
leeyvie_ping 2011-07-13
  • 打赏
  • 举报
回复
LINUX下加上FD_SET(0, &rfds)是获得键盘输入的,不过windows下这样加不行,就会报非套接字的错误。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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