다음과 같은 동작을 구현해야합니다. 서버가 시작될 때 브로드 캐스트를 사용하는 기존 서버를 확인해야합니다. 그런 다음 대답을 기다립니다.C++ recvfrom timeout
그러나 대기 시간 제한을 설정하는 방법은 무엇입니까?
int optval = 1;
char buff[BUFF_SIZE];
SOCKADDR_IN addr;
int length = sizeof(addr);
if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&optval, sizeof(optval)) == SOCKET_ERROR) throw(errors::SETSOCKOPT);
addr->sin_family = AF_INET;
addr->sin_port = htons(this->serverPort);
addr->sin_addr.s_addr = INADDR_ANY;
sendto(s, this->serverName.c_str(), this->serverName.length() + 1, NULL, (SOCKADDR*)&addr, sizeof(addr));
memset(&addr, NULL, sizeof(addr));
recvfrom(s, buff, BUFF_SIZE, NULL, (SOCKADDR*)&addr, &length);
'select (2)'를 사용하거나 nonblocking으로 설정하고'epoll (2)'을 사용하십시오. –