В моей игре есть небольшая ошибка: все работает нормально, если сервер запускается раньше клиента, однако когда клиент запускается раньше сервера, они никогда не подключаются.Это все UDP
Проблема возникает, когда клиент пытается вызвать recvfrom () до запуска сервера, когда это происходит, клиент никогда не находит сервер, а сервер никогда не находит клиента.Возникшая ошибка - блок-блокировка.
Если я остановлю клиента с помощью recvfrom и запусту клиент до того, как сервер (клиент все еще отправляет данные, просто не получает их), они оба не находят друг друга без проблем.
Какое решение для этого?Сейчас кажется, что клиент не может вызвать recvfrom без активного сервера, или все это разваливается.Можно ли проверить, находятся ли данные на определенном порте (данные, которые сервер будет отправлять)?Или есть лучший способ сделать это?
Какой-то код ...
Работа сервера - UDPSocket - это класс
UDPSocket.Initialise();
UDPSocket.MakeNonBlocking();
UDPSocket.Bind(LOCALPORT);
int n = UDPSocket.Receive(&thePacket);
if (n > 0)
UDPSocket.Send(&sendPacket);
Клиент ...
UDP.Initialise();
UDP.MakeNonBlocking();
UDP.SetDestinationAddress(SERVERIP, SERVERPORT);
serverStatus = UDP.Receive(&recvPacket);
if (serverStatus > 0)
{
//Do some things
UDP.Send(dPacket); //Try and reconnect with server
}
Спасибо