1

C++ コードで SFML を使用しています。私の問題はこの質問 ( SFML TCP パケット受信) に似ていますが、答えが満足できないので、新しい質問をすることにしました。

私のコードでは、サーバーとクライアントは、プログラムの次の段階に進むために確認メッセージを交換する必要があります。ただし、サーバーがクライアントからのメッセージを受信することを期待している場合、ウィンドウは「応答していません」と表示されてフリーズします。これを解決するにはどうすればよいですか? 私はすでに 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");
}
4

2 に答える 2

0

クライアントと通信するために追加のスレッドを作成する必要があります。または、別のソケット モデルを使用すると、着信データが利用可能になると、ウィンドウはメッセージを受け取ります。

于 2013-09-08T11:49:50.110 に答える