gpt4 book ai didi

c++ - 套接字 RECV 陷入循环

转载 作者:行者123 更新时间:2023-11-30 03:45:44 26 4
gpt4 key购买 nike

我有以下代码:

while (true)
{
recv(server, buffer, BUFFER_LENGTH, 0);
cout << buffer;
}

我期望发生的情况是,当我的客户端向服务器发送数据以使其接收数据、输出数据,然后返回尝试接收更多数据,但它实际上从未到达 cout 行。如果我删除循环它工作正常,为什么 while 循环使 RECV 永远不会结束......?

发送代码:

while (true)
{
cin >> buffer;
send(client, buffer, BUFFER_LENGTH, 0);
}

谢谢

最佳答案

std::cout 被缓冲,所以输出不直接可见。
试试

std::cout << buffer << std::flush;

相反。

至于为什么循环永远不会结束:默认情况下,套接字处于阻塞模式,所以只要有可用数据,recv 就会等待,然后才返回。
您必须将 server 套接字移动到非阻塞模式或只读取一次。

关于c++ - 套接字 RECV 陷入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34565819/

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