运行此代码时,响应不会出现。 Soket处于连接状态。 所以永远处于待机状态的返回值而不是没有。 请帮帮我。
...
sock = socket(PF_INET, protocol, 0);
...
char recv_data[102400] = {0,};
while ((size=recv(sock,recv_data,102400-1, 0)) > 0){
// some code
}
...
OS:SunOS xname 5.10 Generic_147440-12 sun4u sparc SUNW,太阳火-15000
答案 0 :(得分:1)
我猜测套接字正在阻塞。
int noblock(int fd)
{
int flags = fcntl(fd, F_GETFL, 0);
if (flags < 0) return 0;
flags = (blocking) ? (flags&~O_NONBLOCK) : (flags|O_NONBLOCK);
return (fcntl(fd, F_SETFL, flags) == 0) ? 1 : 0;
}
使用此选项可将套接字设置为非阻塞。如果没有要读取的数据,recv()
将返回-1
并将errno
设置为EWOULDBLOCK
查看这些更改是否会让您超越当前的问题。
你真的应该检查你所有电话的回复代码