为什么select监听两个或以上socket要段错误?百思不解

yeyumin89 2012-02-11 01:50:30
我用的ACE,我现在的情况是,我有一个client同时连接两个端口(两个server都是127.0.0.1,端口不同),然后一个线程select两个端口是否可读,但是select会段错误,不管对方有没有传数据过来。而且如果两个连接但我只监听一个socket的话还是会段错误,只有在只有一个连接的情况下select才会正常,很奇怪啊,大家帮我分析下吧。
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT面试社区 2012-02-12
  • 打赏
  • 举报
回复
欢迎加入网络编程爱好者群:213446800
yeyumin89 2012-02-12
  • 打赏
  • 举报
回复
才接触网络不久 大家帮我分析下啊
yeyumin89 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]
你的 select 语句是怎么写的?
[/Quote]
我的ACE_SOCK_Stream和服务器地址是关联到一起放到map里面的,ACE_SOCK_Stream *指向保存它的一个结构。

ACE_Handle_Set handles;
map<string, ACE_SOCK_Stream *>::iterator iter = sock_pool.begin();
while (iter != sock_pool.end()){
handles.set_bit((*(iter->second)).get_handle());
++iter;
}
max = handles.max_set();
ACE::select (max + 1; &handles; NULL; &tv);

很奇怪,当只连接了一个服务器的时候是正常的,连接两个后到select这就断错误
justkk 2012-02-11
  • 打赏
  • 举报
回复
你的 select 语句是怎么写的?

64,654

社区成员

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

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