2014-10-01 5 views
0

Это мой код udp_broadcast сервера, где РМКО прослушивание на 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()); 
     } 
    } 
} 

на сторону клиента РМКО пакет вещания 255.255.255.255, так что я получаю ответ от сервера в конце концов, и я 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. Это было устарело двадцать лет назад. Используйте широковещательный адрес подсети или лучше использовать многоадресную рассылку.