このコード例http://msdn.microsoft.com/en-us/library/tst0kwb1.aspxを使用して、メッセージを送受信できるコンソール UDP サーバーを作成しました。
しかし、私はこれをコンソール アプリケーションにしたくありません。フォームを使用したいのです。アプリケーションにメッセージ送信機能を正常に実装しましたが、リスナーを機能させる方法がわかりません。
メッセージを受信するためのコードは次のとおりです。何もしません。
注: このコードは、ボタン クリック イベント コードのすぐ下に配置しました。
private void StartListener()
{
bool done = false;
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (!done)
{
this.lblMessage.Text = "Waiting for broadcast";
byte[] bytes = listener.Receive(ref groupEP);
this.lblRecieve.Text = Encoding.ASCII.GetString(bytes, 0, bytes.Length);
}
}
catch (Exception e)
{
this.lblMessage.Text = e.ToString();
}
finally
{
listener.Close();
}
}
このコードは明らかに間違っていますが、私はこれまで C# で何もしたことがなく、このコンソール サンプル コードが UDP サーバーに関する唯一のガイドでした。
メッセージを送信するためのコードは次のとおりです。完全に機能します。
private void btnSend_Click(object sender, EventArgs e)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse("192.168.0.105");
byte[] sendbuf = Encoding.ASCII.GetBytes("test");
IPEndPoint ep = new IPEndPoint(broadcast, listenPort);
s.SendTo(sendbuf, ep);
this.lblMessage.Text = "Sent Message";
}
編集:
私はあなたから得た助けに感謝していますが、私自身の壊れたコードを機能させるために微調整する代わりに、私が望むように機能するように微調整する別のコードを見つけました.
C# でのサーバー クライアント アプリケーションの UDP データグラム コード
これは私が借りたコードで、stop() が正しく動作しないことを除けば完全に動作しますが、大きな問題ではなく、Google で修正するのは難しくありません。
皆さんがくれたリンクから、今でも多くのことを学びました。