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.

48 lines
1.4 KiB

  1. package verteiltesysteme.socket.multithread;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. class UDPServerMulti implements Runnable {
  7. DatagramSocket serverSocket;
  8. DatagramPacket receivePacket;
  9. UDPServerMulti(DatagramSocket serverSocket, DatagramPacket receivePacket) {
  10. this.receivePacket = receivePacket;
  11. this.serverSocket = serverSocket;
  12. }
  13. public static void main(String argv[]) throws Exception {
  14. int udpPort = 36037;
  15. DatagramSocket serverSocket = new DatagramSocket(udpPort);
  16. byte[] receiveData = new byte[1024];
  17. while (true) {
  18. DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  19. serverSocket.receive(receivePacket);
  20. // IST DAS SINNVOLL? Unter welchen Bedingungen? ;-)
  21. new Thread(new UDPServerMulti(serverSocket, receivePacket)).start();
  22. }
  23. }
  24. public void run() {
  25. byte[] sendData = new byte[1024];
  26. String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
  27. InetAddress IPAddress = receivePacket.getAddress();
  28. int clientSrcPort = receivePacket.getPort();
  29. String capitalizedSentence = sentence.toUpperCase();
  30. sendData = capitalizedSentence.getBytes();
  31. DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientSrcPort);
  32. try {
  33. serverSocket.send(sendPacket);
  34. } catch (IOException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. }
  38. }
  39. }