请教多线程,文件点播的问题。

lovevc123 2003-08-22 04:07:01
我把服务器做成多线程,一个listen线程,若干个receive,send线程。
当listen到有连接时,便产生一个新的socket并开启该socket的receive,send线程。

但程序并没有按照我期望的步骤执行。
第一个连接能够成功,并能传输。
但第二个只能连接成功,传输的时候就不响应了。

通过检查,发现第二个连接是卡在了select函数上,
当select函数检测该socket(即socket2)是否可读的时候,每次都返回不可读,
而奇怪的是,当断开正在工作的socket1时,socket2的select就立即有了响应。

难道socket1 和 socket2 是同一个socket???
仔细检查程序,觉得不可能阿,因为socket在类中为protect。
而且每次listen到有连接的时候都是new了一个新类,socket应该不会冲突呀?

那又会是什么问题呢?是端口的问题吗?
据我所知,accept过后产生的socket是系统自动给的端口,不用我自己设定吧?

望大侠指点一二。
...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

18,356

社区成员

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

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