2017-04-01 3 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]); 

} 

어떻게 결합 할 수 있습니까? 새 메시지를 기다리지 만 동시에 보냅니다. 두 개의 포트를 사용해야합니까?

답변

0

아니요, 한 개의 포트는 정상입니다. 두 개의 스레드를 사용하거나 select를 사용하여 비동기 대기를 위해 Java 8의 기능을 사용합니다.

관련 문제