2017-04-01 32 views
0

ピアツーピアメッセージを受信するコードがあります。データグラムの同時受信と送信

try { 
      DatagramSocket ds = new DatagramSocket(1050); 
      DatagramPacket pack = new DatagramPacket(new byte[1024], 1024); 
      while (true) { 
       AscMessage(); 
       ds.receive(pack); 
       System.out.println(new String(pack.getData())); 
      } 
     } 
      catch(Exception e){ 
     System.out.println(e); 
} 

ピアツーピアメッセージを送信するコードがあります。

public void AscMessage(){ 
     System.out.print(">"); 
     final Scanner in = new Scanner (System.in); 
     String s1 = in.nextLine(); 
     this.sendMessage(s1); 
    } 

    public void sendMessage(String mes){ 

    try{ 

     byte[] data = mes.getBytes(); 

     InetAddress addr = InetAddress.getByName(host); 

     DatagramPacket pack = new DatagramPacket(data, data.length, addr, port); 

     DatagramSocket ds = new DatagramSocket(); 

     ds.send(pack); 

     ds.close(); 

    }catch(IOException e){ 

     System.err.println(e); 

    } 

} 

public static void main(String[] args){ 

    Sender sndr = new Sender("localhost", 1050); 

    while (true){ 
     sndr.AscMessage(); 
    } 
    for (int k = 0; k < args.length; k++) 
     sndr.sendMessage(args[k]); 

} 

どのように組み合わせることができますか?新しいメッセージを待ちますが、同時に送信してください。 2つのポートを使用する必要がありますか?

答えて

0

いいえ、1つのポートは問題ありません。 2つのスレッドを使用するか、selectを使用して非同期待機するためにJava 8の機能を使用します。

関連する問題