2014-10-01 40 views
0

已經綁定地址這是我udp_broadcast服務器代碼,其中在客戶端IAM廣播包255.255.255.255上0.0.0.0不能使用

try{ 
    socket = new DatagramSocket (7777,InetAddress.getByName("0.0.0.0")); 
    socket.setBroadcast(true); 

    while(true) 
    { 
    System.out.println(getClass().getName()+"ready recieve broadcast packets!"); 

    //recieve a packet 

    byte[] recvBuf = new byte[15000]; 
    DatagramPacket packet = new DatagramPacket(recvBuf,recvBuf.length); 
    socket.receive(packet); 
    System.out.println(getClass().getName() +"packet recieved from :" +packet.getAddress().getHostAddress()); 
    System.out.println("data is "+new String(packet.getData())); 

    String message = new String(packet.getData()).trim(); 

    if(message.equals("p2p_project_node")) 
    { 
     byte [] senddata = "I_found_you_did_YOU".getBytes(); 
     DatagramPacket sendpacket= new DatagramPacket(senddata,senddata.length,packet.getAddress(),packet.getPort()); 
     socket.send(sendpacket); 
     System.out.println("packet sent to "+sendpacket.getAddress().getHostAddress()); 
     } 
    } 
} 

亞姆聽,讓我從服務器獲取 答覆最終和我endup在獲得服務器的IP地址

udp_client_side代碼

try {   
    c = new DatagramSocket(); 
    c.setBroadcast(true); 
    byte [] sendData = "p2p_project_node".getBytes(); 


    //this is broadcasting to 255.255.255.255a 
    try{ 
     DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,InetAddress.getByName("255.255.255.255"),7777); 
     c.send(sendPacket); 
     System.out.println("rewuest sent to 255.255.255.255"); 
    } 
    catch(Exception e) { 
     System.out.println("exception 255.255" +e); 
    } 

在服務器端IAM越來越錯誤,指出

異常java.net.BindException「地址已在使用:無法綁定」

我要去哪裏錯了,如果有人可以幫助我,這將是巨大的感謝事先

回答

0

地址已在使用。你不能將你的套接字綁定到該地址。其他一些進程已經擁有綁定到該詩人的UDP套接字。可能是您自己程序的先前實例。

不要廣播到255.255.255.255。它在二十年前被棄用。使用子網廣播地址,或者更好地使用多播。