Мои клиент-серверные программы хорошо работают друг с другом, но только при запуске и запуске сервера до запуска моего клиента. Если клиент не может подключиться с первой попытки, я не могу заставить его попробовать еще раз.Использование UdpClient, как вы пытаетесь выполнить попытку UdpClient.Connect() до тех пор, пока это не удастся?
Вот мой метод connect
моего клиента.
public void connect()
{
IPAddress server_address = IPAddress.Parse("127.0.0.1");
IPEndPoint server_ip = new IPEndPoint(server_address, 5685);
Console.WriteLine("2");
bool connected = false;
while (!connected)
{
try
{
Console.WriteLine("IN CONNECTED");
udp_client.Connect(server_ip);
byte[] send_data = Encoding.ASCII.GetBytes("INIT");
udp_client.Send(send_data, send_data.Length);
byte[] received_bytes = udp_client.Receive(ref server_ip);
string received_data = Encoding.ASCII.GetString(received_bytes);
if (received_data == "INIT")
{
connected = true;
Console.WriteLine("RECEIVED INIT");
listen(server_ip);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
То, что я надеялся увидеть это udp_client.Connect(server_ip)
в цикле, пока я не получил, что сообщение «INIT» с сервера.
Как и в настоящее время, нет петли. Кажется, что он застрял на udp_client.Receive(ref server_ip)
.
Любая помощь будет оценена!
Это выглядит как петля для меня - не выход из строя, если только connected = true. Что происходит? Отладка и выясните, почему соединение установлено на true. –
Я пытаюсь сказать, что цикла не происходит. Он либо подключается, либо нет, и программа должна быть перезапущена. При отладке цикл зависает на 'udp_client.Receive()'. – MrDysprosium
Затем получите блокирующий вызов, и он будет ждать вечно, пока он не получит что-то. Это не повесить. Поместите метод в отдельный поток, и он просто подождёт, пока не получит ответ, а затем продолжит. –