我正在尝试创建一个 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 上,直到它收到连接(我的猜测),所以,它永远没有机会专门等待输入。我怎样才能设置一个可以很好地工作的事件?
谢谢!