У меня есть программа, посредством которой данные отправляются с одного компьютера на другой по протоколу UDP.Проблема заключается в том, что отправляющая программа не всегда может отправлять данные, и я хочу, чтобы функция приема принимающей программы была включена ТОЛЬКО при отправке чего-либо на указанный порт (в данном случае 5000), в противном случае, когда пользователь пытается получить данныена порту с помощью UdpClient
программа вылетает.Например:
private const int listenPort = 5000;//receiving port
UdpClient listener = new UdpClient(listenPort);//udclient instance
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
public string received_data;
public byte[] receive_byte_array;
private void receiveButton_Click(object sender, RoutedEventArgs e)
{
receive_byte_array = listener.Receive(ref groupEP);
received_data = Encoding.ASCII.GetString(receive_byte_array, 0, receive_byte_array.Length);
textBox1.Text = received_data.ToString();
}
Моя проблема заключается в том, что когда данные не отправляются, и пользователь нажимает receiveButton
в главном окне, вся моя программа вылетает.Если быть точным, проблема здесь:
receive_byte_array = listener.Receive(ref groupEP);
Я пытался исправить проблему, поместив приведенную выше строку кода в оператор try catch, но даже тогда программа вылетает!Кажется, что просто попытка получить данные через порт IPEndpoint, когда ни один из них не вызывает ада.
Любые идеи относительно того, как я могу сначала проверить, отправляются ли данные в порт, и только затем позволить пользователю получать данные?Заранее спасибо.