linux下tcp并发服务器与windows平台下winsock2的通信问题
碧空星尘 2005-12-25 07:11:37 按照标准的accept之后fork一个进程的办法来编写的服务器。监听描述符是listenfd(大小为3), accept返回值是connfd。然后子进程不用说,关闭listenfd,然后开始执行程序,依靠connfd进行通信,主进程关闭connfd,返回到accept处。
问题之一:按照这种模式,我把每次accept之后的返回值打印,发现奇怪的现象,就是不管客户端有没有并发,所有的connfd都是4,奇怪的是如果客户程序都是linux下的,则可以进行正常的通信。有点想不通。如果描述符一样,加上同样的协议和端口,难道不会发生混乱吗???
可是如果把主进程不关闭connfd,则每连接一次,服务端所返回的connfd就会比上一个大1。
谁知道是怎么回事呢?
另外一个问题,就是如果使用winsock2的windows客户程序多线程连接服务器,总会有几个线程连接不上,或者发送数据出错,报10038、10054、10053等错误,查了很久,发现都没有什么办法。郁闷