我已經使用此代碼示例http://msdn.microsoft.com/en-us/library/tst0kwb1.aspx來製作能夠接收和發送消息的控制檯UDP服務器。WinForms中的UDPclient?
但我不希望這是一個控制檯應用程序,我想使用窗體。我已經在我的應用程序中成功實現了發送消息功能,但是我不知道如何讓偵聽器工作。
這裏是接收消息的代碼,它什麼也不做。
注意:我將此代碼放在按鈕單擊事件代碼的下方。
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";
}
編輯:
我感謝我從你得到了幫助,但不是調整我自己的斷碼的工作,我發現了另一個代碼來調整,這樣它的工作原理是我想要的。
UDP datagram code for server client application in C#
這是我借的代碼和它完美的作品,除了停止()不能正常工作,但它不是一個大問題,不應該是很難與谷歌修復。
我還是從你們給我的鏈接中學到了很多東西。
感謝您的回答,請看本教程。 – Adam 2012-04-17 06:34:23