verwendet werden können
Code: Select all
var validIps = NetworkInterface
.GetAllNetworkInterfaces()
.Where(nic => nic.OperationalStatus == OperationalStatus.Up)
.SelectMany(nic => nic.GetIPProperties().UnicastAddresses)
.Select(ua => ua.Address)
.Where(addr => addr.AddressFamily == AddressFamily.InterNetwork);
foreach (var item in validIps)
{
Console.WriteLine(item);
}
//192.168.3.244 WLAN
//192.168.153.1 VMware Network Adapter VMnet1
//192.168.25.1 VMware Network Adapter VMnet8
//127.0.0.1
Code
Code: Select all
namespace UDP
{
internal class Program
{
static void Main(string[] args)
{
//绑定本地IP端点
//IPAddress ip_b = IPAddress.Parse("192.168.3.244");
//IPAddress ip_b = IPAddress.Parse("192.168.153.1");
IPAddress ip_b = IPAddress.Parse("192.168.25.1");
//IPAddress ip_b = IPAddress.Parse("127.0.0.1");
IPEndPoint iPEndPoint_B = new IPEndPoint(ip_b, 321);
UdpClient udpClientB = new UdpClient(iPEndPoint_B);
Byte[] sendBytes_multi = Encoding.ASCII.GetBytes("Gruop 224.0.1.0 say Hi");
IPAddress multiCastIP = IPAddress.Parse("224.0.2.0");
IPEndPoint multiCastIPEndPoint = new IPEndPoint(multiCastIP, 321);
udpClientB.JoinMulticastGroup(multiCastIP, ip_b);
Task.Run(() =>
{
var bytes = udpClientB.Receive(ref multiCastIPEndPoint);
string msg = Encoding.UTF8.GetString(bytes);
Console.WriteLine("B:" + msg);
Console.WriteLine(udpClientB.Client.LocalEndPoint);
});
UdpClient sendMultiUdp = new UdpClient();
sendMultiUdp.Connect(multiCastIPEndPoint);
sendMultiUdp.MulticastLoopback = true;
sendMultiUdp.Ttl = 5;
sendMultiUdp.Send(sendBytes_multi);
Console.ReadKey();
//result:
//B:Gruop 224.0.1.0 say Hi
//192.168.25.1:321
}
}
}
Wenn ich keine IP im Empfangs-UdpClinet binde. Es wird 0.0.0.0:321
Mobile version