【发布时间】:2013-09-08 10:23:31
【问题描述】:
我在我的 C++ 代码中使用 SFML。我的问题与这个问题(SFML TCP packet receive)类似,但由于答案不令我满意,我决定提出一个新问题。
在我的代码中,服务器和客户端需要交换确认消息才能继续程序的下一个阶段。但是,当服务器期望从客户端接收消息时,窗口冻结并显示“未响应”,我该如何解决这个问题?我已经让 setBlocking 变量为 false。
我的代码如下:
sf::Socket::Status status;
string msg;
if (isServer)
{
do {
status = host.receiveMessage(msg);
} while (status != sf::Socket::Done || msg!= "done1");
status = host.sendMessage("done1");
}
else
{
do {
status = host.sendMessage("done1");
} while (status != sf::Socket::Done);
do {
status = host.receiveMessage(msg);
} while (status != sf::Socket::Done || msg!= "done1");
}
【问题讨论】:
-
Sooo.. 你用 while 循环替换了阻塞调用?
-
哦!我明白了,这是因为 while 循环。那我可以知道该怎么做吗?我必须等待客户的回复,但我不希望它冻结:(