There are a code that receaving peer-to-peer messages.
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);
}
There is a code that sends a peer-to-peer message.
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]);
}
How can they be combined? Wait for a new message, but at the same time send. Is it necessary to use two ports?
No, one port is ok. You either use two threads or you use the features of Java 8 for asynchronous waiting with select.