データを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);
上記のコード行をtrycatchステートメントに入れて問題を解決しようとしましたが、それでもプログラムがクラッシュします。何も起こらないときにIPEndpointポートでデータを受信しようとしているだけのようです。
データがポートに送信されているかどうかを最初に確認してから、ユーザーがデータを受信できるようにする方法についてのアイデアはありますか?前もって感謝します。