У меня есть программа, с помощью которой данные передаются с одного компьютера на другой через 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, когда их нет, вызывает ад.
Любые идеи относительно того, как я могу сначала проверить, отправляются ли данные в порт, и только затем разрешить пользователю получать данные? Заранее спасибо.