我已使用此代码示例http://msdn.microsoft.com/en-us/library/tst0kwb1.aspx来制作能够接收和发送消息的控制台 UDP 服务器。
但我不希望这是一个控制台应用程序,我想使用 Forms。我已经在我的应用程序中成功实现了发送消息功能,但我不知道如何让监听器工作。
这是接收消息的代码,它不做任何事情。
注意:我将此代码放在按钮单击事件代码的正下方。
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";
}
编辑:
我感谢您的帮助,但我没有调整我自己损坏的代码以使其正常工作,而是找到了另一个代码进行调整,以便它像我想要的那样工作。
这是我借来的代码,它工作得很好,除了 stop() 不能正常工作,但这不是一个主要问题,应该不难用谷歌修复。
我仍然从你们给我的链接中学到了很多东西。