Jak uzyskać adres IP nadawcy pakietu UDP multiemisji? Bieżący kod jest ustawiony w sposób synchroniczny/blokujący (patrz uwaga poniżej). Oto kod:Uzyskaj adres IP nadawcy z pakietu multiemisji
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{}
}
}
Uwaga: To pytanie pochodzi z chat, jako taki nie jest mój kod. Pytam tylko dlatego, że rozumiem problem.
Proszę nie zawsze używać pustej '' {} catch. Po prostu maskuje błędy i sprawia, że problemy są trudniejsze do rozpoznania. Jeśli próbujesz zignorować konkretny wyjątek, zrób to dla tego konkretnego typu (np. "Catch FileNotFoundExcetion {}") –
@ JonathonReinhart czy przeczytałeś komentarz o mnie, mówiąc, że to nie mój kod * westchnienie * –
Przepraszam za brakujące . Jednak nie nazwałbym tego "płonącym", nazwałbym to "konstruktywną sugestią". –