You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.5 KiB

  1. /* Angelehnt an Kurose/Ross Computernetzwerke (bis 5e Java, ab 6e Python) */
  2. package verteiltesysteme.socket.reuse;
  3. import java.net.*;
  4. class UDPServerReuse {
  5. public static void main(String args[]) throws Exception {
  6. int udpPort = 36037;
  7. @SuppressWarnings("resource")
  8. DatagramSocket serverSocket = new DatagramSocket(null);
  9. // erlaubt das Wiederverwenden des Ports, mehrere Server-Prozesse k�nnen gleichen Port nutzen
  10. serverSocket.setReuseAddress(true);
  11. serverSocket.bind(new InetSocketAddress(udpPort));
  12. byte[] receiveData = new byte[1024];
  13. byte[] sendData = new byte[1024];
  14. System.out.println("UDP Server started. Waiting for incoming requests... (reuseAddress="+serverSocket.getReuseAddress()+", timeout="+serverSocket.getSoTimeout() +", buffersize="+serverSocket.getReceiveBufferSize()+")");
  15. while (true) {
  16. DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  17. serverSocket.receive(receivePacket);
  18. String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
  19. InetAddress IPAddress = receivePacket.getAddress();
  20. int clientSrcPort = receivePacket.getPort();
  21. System.out.println("Received request from client " + IPAddress + ":" + clientSrcPort + " generating response...");
  22. String capitalizedSentence = sentence.toUpperCase();
  23. sendData = capitalizedSentence.getBytes();
  24. DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientSrcPort);
  25. serverSocket.send(sendPacket);
  26. }
  27. }
  28. }