2011-09-20 23 views
5

Ağımda cihaz bulma işlemi için "255.255.255.255" IP adresinde bir UDP yayını göndermeye çalışıyorum. Program yürütür, ancak Wireshark'ta bir şey göremiyorum. IP adresini ağımdaki bilinen bir IP'ye değiştirdiğimde, Wireshark'daki paketleri görebiliyorum. neler oluyor ?Java üzerinde UDP yayını çalışmıyor

Bu benim kodudur:

public static void main(String args[]) throws Exception 
{ 
    String Broadcastaddress = new String("255.255.255.255"); 
    int port = 9876; 
    DatagramSocket serverSocket = new DatagramSocket(); 
    serverSocket.setBroadcast(true); 
    InetAddress IPAddress = InetAddress.getByName(Broadcastaddress); 
    System.out.println("Sending Discovery message to " + IPAddress + "Via UDP port " + port); 

    byte[] sendData = new byte[4]; 
    sendData[0] = 'F'; 
    sendData[1] = 'I'; 
    sendData[2] = 'N'; 
    sendData[3] = 'D'; 

    DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,port); 

    while (true) 
    { 
     serverSocket.send(sendPacket); 
     System.out.println("Packet sent"); 
    } 


} 

cevap

4

Tamam, bir cevap buldum. Windows 7 artık 255.255.255.255 yayını desteklemiyor, görünüşe göre çeşitli tehditlere açık bir açılıştı. Yayını yapmak için farklı bir yaklaşım kullanmalı.

IPv4 ana bilgisayar için yayın adresi alt ağ maskesinin bit tamamlayıcı ve konağın IP adresi arasındaki bit tabanlı mantıksal OR işlemi gerçekleştirerek elde edilebilir:

Bu Wikipedia'dan küçük explenation olduğunu. Örnek: 255.240.0.0 alt ağ maskesine sahip 100.16.0.0/12 özel IP adresi alanını kullanarak bir IPv4 alt ağına bir paket yayınlamak için yayın adresi: 100.16.0.0 | 0.15.255.255 = 100.31.255.255.

IP yayın adresi 255.255.255.255 için özel bir tanım bulunmaktadır. Sıfır ağın yayın adresi veya İnternet Protokolü standartlarında bu ağ için, yani yerel ağda bulunan 0.0.0.0'dır. Bu adrese aktarım, yerel ağa Internet'e bağlanan yönlendiriciler tarafından hiçbir zaman iletilmemesi nedeniyle tanımlamayla sınırlıdır.