로컬 게임 서버를 확인하기 위해 UDP 브로드 캐스트 프로그램을 만들려고하지만 수신 측에 문제가 있습니다. 살아있는 서버의 양은 항상 알 수 없으므로 중지 할 때만 종료되는 루프가 있어야합니다. 그래서 여기에 코드의이 비트에 :C++ while 루프를 벗어나는 방법 recvfrom()
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에서 연결 (내 추측)을받을 때까지 중단되므로 입력을 특별히 기다릴 기회가 없다. 이처럼 잘 작동 할 수있는 이벤트를 어떻게 설정할 수 있습니까?
감사합니다.