当前位置: 技术问答>linux和unix
急!socket 客户端数据接收失败
来源: 互联网 发布时间:2017-01-11
本文导语: 我写了个Windows(Server)-Linux(Client)间socket通信的程序,Server端起来后,再起Client,Client发送的数据Server能收到,但是Server发送的数据,Client收不到。 后用netstat -A inet [abc@server Client]$ netstat -A inet Active...
我写了个Windows(Server)-Linux(Client)间socket通信的程序,Server端起来后,再起Client,Client发送的数据Server能收到,但是Server发送的数据,Client收不到。
后用netstat -A inet
[abc@server Client]$ netstat -A inet
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 3950 0 localhost:55921 localhost:45000 ESTABLISHED
[abc@server Client]$ netstat -A inet
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 3990 0 localhost:55921 localhost:45000 ESTABLISHED
从Recv-Q看,Client主机已经收到了数据(每次Server都会发40字节的数据给Client),但是我的程序却没有接收到数据。
很纠结,不知道什么原因。
同时在程序里,我打出了Client的socket端口和地址,居然都是0,很迷惑,还请高手指教!!!
后用netstat -A inet
[abc@server Client]$ netstat -A inet
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 3950 0 localhost:55921 localhost:45000 ESTABLISHED
[abc@server Client]$ netstat -A inet
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 3990 0 localhost:55921 localhost:45000 ESTABLISHED
从Recv-Q看,Client主机已经收到了数据(每次Server都会发40字节的数据给Client),但是我的程序却没有接收到数据。
很纠结,不知道什么原因。
同时在程序里,我打出了Client的socket端口和地址,居然都是0,很迷惑,还请高手指教!!!
|
就算服务端没有重新设置FD_SET,但客户端至少能收到一条消息,所以应该是客户端的问题。
注意你客户端的如下语句:
ret = select( 1, &readfd, NULL, NULL, NULL );
在linux下面,select的第一个参数是有意义的(在windows下面没有),你仔细看看man手册吧。应该是:
ret = select( fd + 1, &readfd, NULL, NULL, NULL );
注意你客户端的如下语句:
ret = select( 1, &readfd, NULL, NULL, NULL );
在linux下面,select的第一个参数是有意义的(在windows下面没有),你仔细看看man手册吧。应该是:
ret = select( fd + 1, &readfd, NULL, NULL, NULL );