关于select系统调用超时

发布于 2022-10-15 08:58:28 字数 1571 浏览 27 评论 0

本帖最后由 chllcy 于 2011-04-21 12:38 编辑

各位老鸟,在进行select(s+1, &fds, 0, 0, &timeout) 系统调用时返回0.
用的是datareel的gxSocket.cpp实现。

代码大概如下:

  1.   gxsTelnetClient telnetc;
  2.    memset(sbuf,0x00,sbuf_size);
  3.     telnetc.RecvString(sbuf, sbuf_size, "login");
  4.     CheckError(&telnetc,"wait login");
  5.    
  6.     telnetc.SendString(user.c_str(), user.length());
  7.     CheckError(&telnetc,"send user");
  8.    
  9.     memset(sbuf,0x00,sbuf_size);
  10.     telnetc.RecvString(sbuf, sbuf_size, "Password");
  11.     CheckError(&telnetc,"wait Password");
  12.     telnetc.SendString(passwd.c_str(), passwd.length());
  13.     CheckError(&telnetc,"send Password");
  14.     memset(sbuf,0x00,sbuf_size);
  15.     telnetc.RecvString(sbuf, sbuf_size, "$"); --此处返回超时报错。
  16.     CheckError(&telnetc,"wait");

复制代码不知道是什么状况,跟主机设置有关?主机AIX系统。在用户名,密码处均没有超时问题。请各位老鸟能否指点一二。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七七 2022-10-22 08:58:28

没收到数据呗,抓包看看吧。

请你别敷衍 2022-10-22 08:58:28
  1. telnetc.RecvString(sbuf, sbuf_size, "$"); --此处返回超时报错。

复制代码但是在这后面可以输出sbuf里的数据啊,应该是返回了的。

浪荡不羁 2022-10-22 08:58:28

每次select之前都重新对fds和timeout赋值了么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文