我在我的 C++ 代码中使用 SFML。我的问题类似于这个问题(SFML TCP packet receive),但由于答案不满足我,我决定问一个新问题。
在我的代码中,服务器和客户端需要交换确认消息才能进入程序的下一阶段。但是,当服务器期望从客户端接收消息时,窗口冻结并显示“未响应”,我该如何解决这个问题?我已经让 setBlocking 变量为假。
我的代码如下:
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");
}