ローカル ゲーム サーバーをチェックする UDP ブロードキャスト プログラムを作成しようとしていますが、受信側で問題が発生しています。稼働中のサーバーの数は常に不明であるため、停止したときにのみ終了するループが必要です。したがって、このコードでは次のようになります。
while(1) // start a while loop
{
if(recvfrom(sd,buff,BUFFSZ,0,(struct sockaddr *)&peer,&psz) < 0) // recvfrom() function call
{
cout << red << "Fatal: Failed to receive data" << white << endl;
return;
}
else
{
cout << green << "Found Server :: " << white;
cout << yellow << inet_ntoa(peer.sin_addr), htons(peer.sin_port);
cout << endl;
}
}
Ctrl + C を押すまで、この recvfrom() 関数を実行したいと思います。(関連する質問から) ハンドラーなどを設定しようとしましたが、それらはすべて複雑すぎるか、終了するだけの単純な関数です。デモンストレーションとしてのプログラム。これが私の問題です。プログラムは、接続を受信するまで recvfrom でハングアップするため (私の推測では)、特に入力を待機する機会はありません。これにうまく機能するイベントを設定するにはどうすればよいですか?
ありがとう!