同时接收和发送数据报

时间:2017-04-01 18:19:47

标签: java datagram

有一个代码可以接收点对点消息。

 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]);

}

他们如何结合起来?等待新消息,但同时发送。 是否有必要使用两个端口?

1 个答案:

答案 0 :(得分:0)

不,一个端口没问题。您可以使用两个线程,也可以使用Java 8的功能进行异步等待。