linux下tcp并发服务器与windows平台下winsock2的通信问题
按照标准的accept之后fork一个进程的办法来编写的服务器。监听描述符是listenfd(大小为3), accept返回值是connfd。然后子进程不用说,关闭listenfd,然后开始执行程序,依靠connfd进行通信,主进程关闭connfd,返回到accept处。
问题之一:按照这种模式,我把每次accept之后的返回值打印,发现奇怪的现象,就是不管客户端有没有并发,所有的connfd都是4,奇怪的是如果客户程序都是linux下的,则可以进行正常的通信。有点想不通。如果描述符一样,加上同样的协议和端口,难道不会发生混乱吗???
可是如果把主进程不关闭connfd,则每连接一次,服务端所返回的connfd就会比上一个大1。
谁知道是怎么回事呢?
另外一个问题,就是如果使用winsock2的windows客户程序多线程连接服务器,总会有几个线程连接不上,或者发送数据出错,报10038、10054、10053等错误,查了很久,发现都没有什么办法。郁闷
问题之一:按照这种模式,我把每次accept之后的返回值打印,发现奇怪的现象,就是不管客户端有没有并发,所有的connfd都是4,奇怪的是如果客户程序都是linux下的,则可以进行正常的通信。有点想不通。如果描述符一样,加上同样的协议和端口,难道不会发生混乱吗???
可是如果把主进程不关闭connfd,则每连接一次,服务端所返回的connfd就会比上一个大1。
谁知道是怎么回事呢?
另外一个问题,就是如果使用winsock2的windows客户程序多线程连接服务器,总会有几个线程连接不上,或者发送数据出错,报10038、10054、10053等错误,查了很久,发现都没有什么办法。郁闷
...全文
相关推荐
tcp.rar_tcp_win和linux下的tcp
tcp通讯,能在win和linux下运行的tcp。
Zeus:高性能,跨平台的Internet通信引擎。 使用本机套接字API开发。 旨在处理数百万个并发连接
Zeus:高性能,跨平台的Internet通信引擎。 使用本机套接字API开发。 旨在处理数百万个并发连接
Linux和windows通讯
这是基于Linux和Windows中的C、C++网络编程。
C/S结构windows传文件至linux C语言程序
C/S结构windows传文件至linux程序 windows与linux通信 C语言
socket-windows-and-linux.zip_Linux windows socket_linux c++ sock
利用socket函数实现linux和windows的通讯


