6
如何獲取組播UDP數據包發件人的IP?當前代碼以同步/阻塞方式設置(請參閱下面的註釋)。下面是代碼:從組播數據包獲取發件人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 FileNotFoundExcetion {}') –
@JonathonReinhart你讀了關於我的評論說它不是我的代碼*嘆息* –
我很抱歉失去了。但是,我不會稱之爲「燃燒」,我會稱之爲「提出建設性的建議」。 –