我是UDP的新手。使用测试环境,我可以发送/接收单个UDP消息。但是,我试图弄清楚如何接收多个UDP消息。我希望MyListener服务在我发送它们的时候全天接收UDP数据包。我感谢任何帮助。如下所示,如果我在DoSomethingWithThisText的周围放置一段时间(真),那么在调试的时候就可以工作。但是,在尝试将MyListener作为服务运行时,它不起作用,因为Start永远不会超过while(true)循环。UDP在.NET中发送/接收
我的听众服务看起来像这样...
public class MyListener
{
private udpClient udpListener;
private int udpPort = 51551;
public void Start()
{
udpListener = new UdpClient(udpPort);
IPEndPoint listenerEndPoint = new IPEndPoint(IPAddress.Any, udpPort);
Byte[] message = udpListener.Receive(ref listenerEndPoint);
Console.WriteLine(Encoding.UTF8.GetString(message));
DoSomethingWithThisText(Encoding.UTF8.GetString(message));
}
}
我的发件人是这样的:
static void Main(string[] args)
{
IPAddress ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
int port = 51551;
//define some variables.
Console.Read();
UdpClient client = new UdpClient();
client.Connect(new System.Net.IPEndPoint(ipAddress, port));
Byte[] message = Encoding.UTF8.GetBytes(string.Format("var1={0}&var2={1}&var3={2}", new string[] { v1, v2, v3 }));
client.Send(message, message.Length);
client.Close();
Console.WriteLine(string.Format("Sent message");
Console.Read();
}
这里没有资源泄漏,因为您调用了'EndReceive',所有与每个读取操作相关的资源都会被正确清理。请注意,这些天'ReadAsync'可能更可取。 –