【发布时间】:2013-11-14 00:54:33
【问题描述】:
我有一个通过端口 4747 发送/广播 UDP 消息的软件,我想在我的 C# 应用程序上获取这些消息。我已经使用了 Microsoft Network Monitor 并捕获了那些 UDP 消息,但是在我的 C# 程序上尝试了一堆东西,却无法获得任何这些消息。 NetworkMonitor 中的消息日志如下: 88922 00:46:57 14/11/2013 862.7592038 MM-B6DD62A 224.74.74.74 UDP UDP:SrcPort = 1053, DstPort = 7474, 长度 = 15 {UDP:1001, IPv4:984}
消息正在从网络中的一台计算机发送到其他计算机。
我期待一些简单的事情:
UdpClient udp = new UdpClient(7474);
udp.BeginReceive(Receive, new object());
public void Receive(IAsyncResult ar)
{
Console.WriteLine("Getting some thing...");
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 7474);
byte[] bytes = udp.EndReceive(ar, ref ip);
string message = Encoding.ASCII.GetString(bytes);
Console.WriteLine(message);
}
可以解决我的问题,但没有捕捉到任何东西。
有什么建议吗?
【问题讨论】:
-
是广播包吗?您可能需要在 UdpClient 上将 EnableBroadcast 设置为 true
-
目标地址是多写的(这是我在网络监控工具中看到的)。我试过 EnableBroadcast,没有运气...
-
是的,多播。您可能需要使用 224.74.74.74 地址调用 JoinMulticastGroup (msdn.microsoft.com/en-us/library/2fxkak8t(v=vs.100).aspx)。但是,我从未尝试过,只是按照文档进行。