gpt4 book ai didi

c - solaris recv 无限接收

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:57 25 4
gpt4 key购买 nike

当您运行这段代码时,没有响应。Soket是一种被连接的状态。所以永远处于standby状态返回值无not。请帮助我。

...
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,Sun-Fire-15000

最佳答案

我猜套接字阻塞了。

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

看看这些改变是否能让您解决当前的问题。

你真的应该检查所有调用的返回码

关于c - solaris recv 无限接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com