如何获取多播UDP数据包发送者的IP地址?当前代码采用同步/阻塞方式设置(见下面的注释)。以下是代码:
private void receive()
{
string mcastGroup = SetMcastGroup();
s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.EnableBroadcast = true;
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5000);
s.Bind(ipep);
IPAddress ip = IPAddress.Parse(mcastGroup);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any));
while (true)
{
try
{
byte[] b = new byte[4096];
s.Receive(b);
string str = Encoding.ASCII.GetString(b, 0, b.Length);
//this.SetText(ipep.Address + ": " + str.Trim());
this.SetText(senderIP() + ": " + str.Trim());
}
catch{}
}
}
注意:这个问题来自聊天,因此不是我的代码。我只是问这个问题是因为我理解了这个问题。
catch { }
。这只会掩盖错误,使问题更难以识别。如果您尝试忽略特定的异常,请针对该特定类型进行处理(例如catch FileNotFoundException { }
)。 - Jonathon Reinhart