en benim alt her ana bilgisayara bir UDP mesajı göndermek (ve sonra benim alt herhangi bir ana bilgisayardan bir UDP iletisi) istediğinizi varsayalım: Şu andaAna bilgisayarın varsayılan ağ bağdaştırıcısının yayın adresini nasıl alırsınız? C#
yapmam:
IPAddress broadcast = IPAddress.Parse("192.168.1.255");
fakat tabiki bunun alt ağın 192.168.1/24'den farklı olması durumunda dinamik olarak yapılmasını istiyorum. Beraber denedim:
IPAddress broadcast = IPAddress.Broadcast;
ama IPAddress.Broadcast yani ... mesajları (bir istisna atar) göndermek için kullanılamaz "255.255.255.255" temsil eder:
nasıl I do Yerel ağ adaptörü yayın adresini (veya elbette netmask) aldınız mı?
BU Sana yerel IP ve alt ağ alırsanız, hesaplamak için hiçbir sorun olmalıdır
public IPAddress getBroadcastIP()
{
IPAddress maskIP = getHostMask();
IPAddress hostIP = getHostIP();
if (maskIP==null || hostIP == null)
return null;
byte[] complementedMaskBytes = new byte[4];
byte[] broadcastIPBytes = new byte[4];
for (int i = 0; i < 4; i++)
{
complementedMaskBytes[i] = (byte) ~ (maskIP.GetAddressBytes().ElementAt(i));
broadcastIPBytes[i] = (byte) ((hostIP.GetAddressBytes().ElementAt(i))|complementedMaskBytes[i]);
}
return new IPAddress(broadcastIPBytes);
}
private IPAddress getHostMask()
{
NetworkInterface[] Interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface Interface in Interfaces)
{
IPAddress hostIP = getHostIP();
UnicastIPAddressInformationCollection UnicastIPInfoCol = Interface.GetIPProperties().UnicastAddresses;
foreach (UnicastIPAddressInformation UnicatIPInfo in UnicastIPInfoCol)
{
if (UnicatIPInfo.Address.ToString() == hostIP.ToString())
{
return UnicatIPInfo.IPv4Mask;
}
}
}
return null;
}
private IPAddress getHostIP()
{
foreach (IPAddress ip in (Dns.GetHostEntry(Dns.GetHostName())).AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
return ip;
}
return null;
}
Gönderdiğiniz çözüm benim için iyi çalıştı. Paqogomez'e bir cevap vermedim çünkü seninkiler direkt macun çalıştı. Kendi cevabını değiştirip kabul etmen gerekip gerekmediğini merak ediyor musun? – ScottN