2016-04-16 5 views
0

1台のマシンでサーバとクライアントを実行する際に問題があります。私はサーバーを実行することができますが、クライアントを実行すると、エラーが発生します。java.net.BindException: Address already in use at java.net.PlainDatagramSocketImpl.bind0(Native Method) 使用する必要のあるsshがあるとわかっていますが、これを解決する方法はわかりません。 おかげ1台のマシンでサーバとクライアントを実行する(netbeans 8.1)

public class WRRCourseWork { 
public static void main(String[] args) { 
    try { 
     DatagramSocket IN_socket = new DatagramSocket(3000); 
     DatagramSocket OUT_socket = new DatagramSocket(5000); 
     IN_socket.setSoTimeout(0); 
     byte[] buffer = new byte[1024]; 
     DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 
     while (true) { 
      //recive the message 

      IN_socket.receive(packet); 
      String message = new String(buffer); 
      System.out.println("Got message: " + message.trim()); 

      // send the message 
      String host = ""; 
      InetAddress addr = InetAddress.getByName(host); 
      DatagramPacket OUT_Packet = new DatagramPacket(message.getBytes(), message.getBytes().length, addr, 5000); 
      OUT_socket.send(OUT_Packet); 
      System.out.println("Sending Message: "+ message.trim()); 
     } 

    } catch (Exception error) { 
     error.printStackTrace(); 
    } 
} 

...クライアント

public class Messages { 
    public static void main(String [] args) { 
     System.out.println("hiiiiiii"); 
     //String host = "localhost"; 
     try { 
      while (true) { 
       InetAddress addr = InetAddress.getLocalHost(); 
       String message = "Hello World"; 
       DatagramPacket packet = new DatagramPacket(message.getBytes(), message.getBytes().length, addr, 4000); 
       DatagramSocket socket = new DatagramSocket(4000); 
       socket.send(packet); 
       //socket.close(); 
      } 
     } catch(Exception error) { 
      // catch all errors 
      error.printStackTrace(); 
     } 
    } 
} 

答えて

1

はあなたのサーバーがポート3000でリッスンしているので、あなたのクライアントは、ポート3000を使用するだけではないのパケット定義で、一度ポート3000を指定するように変更しますソケット。サーバー上の

import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 

public class Messages { 

public static void main(String [] args) { 
    System.out.println("hiiiiiii"); 
    //String host = "localhost"; 
    DatagramSocket socket = null; 
    try { 
     while (true) { 
      InetAddress addr = InetAddress.getLocalHost(); 
      String message = "Hello World"; 
      DatagramPacket packet = 
        new DatagramPacket(message.getBytes(), 
          message.getBytes().length, addr, 3000); 
      socket = new DatagramSocket(); 
      socket.send(packet); 
      socket.close(); 
     } 
    } catch(Exception error) { 
     // catch all errors 
     error.printStackTrace(); 
    } 
} 
} 

結果は、次のようになります。

Got message: Hello World 
Sending Message: Hello World 
Got message: Hello World 
Sending Message: Hello World 
Got message: Hello World 
Sending Message: Hello World 
. . .