gpt4 book ai didi

c++ - socket 问题

转载 作者:行者123 更新时间:2023-11-28 01:09:27 25 4
gpt4 key购买 nike

我有一个服务器和客户端类,但问题是:当我进行无限循环以接受传入连接时,我无法在接受连接时接收到从客户端接收的所有数据,因为在接受连接之前接受 block ,我的代码:

    for (;;) 
{
boost::thread thread(boost::bind(&Irc::Server::startAccept, &s));
thread.join();
for (ClientsMap::const_iterator it = s.begin(); it != s.end(); ++it)
{
std::string msg = getData(it->second->recv());
std::clog << "Msg: " << msg << std::endl;
}
}

最佳答案

您需要多个线程或调用 select/poll 来找出哪些连接有未处理的数据。 IBM has a nice example here ,它适用于任何风格的 Unix、Linux、BSD 等(您可能需要不同的头文件,具体取决于操作系统)。

现在您正在启动一个线程,然后立即等待它,这导致顺序执行并完全违背了线程的目的。

关于c++ - socket 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4174256/

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