当前位置: 技术问答>linux和unix
linux c socket通讯问题
来源: 互联网 发布时间:2016-07-15
本文导语: 我写的是客户端程序:当连接上服务器之后通过while循环和服务器进行数次通讯(采用的是send recv),只有第一次能够正常的收到(rev)服务器返回的数据,其余返回的都是空的。不过,每次都能够正常返回发送(send)的数...
我写的是客户端程序:当连接上服务器之后通过while循环和服务器进行数次通讯(采用的是send recv),只有第一次能够正常的收到(rev)服务器返回的数据,其余返回的都是空的。不过,每次都能够正常返回发送(send)的数据的字节数。而服务器端只有第一次能够收到我发送的数据,其余的都收不到。请高手指点。谢谢
|
我也不知道有什么其他办法了
man recv 它里面是说返回0就是连接断了
RETURN VALUE
These calls return the number of bytes received, or -1 if an error
occurred. The return value will be 0 when the peer has performed an
orderly shutdown.
man recv 它里面是说返回0就是连接断了
RETURN VALUE
These calls return the number of bytes received, or -1 if an error
occurred. The return value will be 0 when the peer has performed an
orderly shutdown.
|
代码。。。。。。
|
mark
|
我开始也和楼主一样的使用socket,后来一高人指点我,用linux的系统服务来绑定socket。这样我们不用考虑进程,线程和释放什么的,启动都省了,linux自己就把程序启动了,开始监听。
具体步骤可以参考链接:
http://songwsdy.spaces.live.com/blog/cns!EF6A77C50AB1C5FE!2155.trak
具体步骤可以参考链接:
http://songwsdy.spaces.live.com/blog/cns!EF6A77C50AB1C5FE!2155.trak
|
最好看一看HTTP协议
|
先用tcpdum截一下包吧,看看数据包有没有正常的收发。
|
recv返回0说明连接断开了,应该是服务器的问题。
http以前只有短连接的。
http以前只有短连接的。
|
跟踪调试一下啊,如果服务器没有问题,那可能跟缓冲区有关,
|
I = recv(sock_fd,strResponse,BUFSIZE-1, 0);
printf("%s %d %dn", __FILE__, __LINE__, I);
if(I
printf("%s %d %dn", __FILE__, __LINE__, I);
if(I