关于select系统调用超时
本帖最后由 chllcy 于 2011-04-21 12:38 编辑
各位老鸟,在进行select(s+1, &fds, 0, 0, &timeout) 系统调用时返回0.
用的是datareel的gxSocket.cpp实现。
代码大概如下:
- gxsTelnetClient telnetc;
- memset(sbuf,0x00,sbuf_size);
- telnetc.RecvString(sbuf, sbuf_size, "login");
- CheckError(&telnetc,"wait login");
- telnetc.SendString(user.c_str(), user.length());
- CheckError(&telnetc,"send user");
- memset(sbuf,0x00,sbuf_size);
- telnetc.RecvString(sbuf, sbuf_size, "Password");
- CheckError(&telnetc,"wait Password");
- telnetc.SendString(passwd.c_str(), passwd.length());
- CheckError(&telnetc,"send Password");
- memset(sbuf,0x00,sbuf_size);
- telnetc.RecvString(sbuf, sbuf_size, "$"); --此处返回超时报错。
- CheckError(&telnetc,"wait");
复制代码不知道是什么状况,跟主机设置有关?主机AIX系统。在用户名,密码处均没有超时问题。请各位老鸟能否指点一二。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没收到数据呗,抓包看看吧。
复制代码但是在这后面可以输出sbuf里的数据啊,应该是返回了的。![](https://www.wenjiangs.com/wp-content/uploads/chinaunix/202207/em08.gif)
每次select之前都重新对fds和timeout赋值了么?