请教多线程,文件点播的问题。
我把服务器做成多线程,一个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是系统自动给的端口,不用我自己设定吧?
望大侠指点一二。