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.

50 lines
1.9 KiB

  1. package verteiltesysteme.socket.timecounter;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. import java.text.DateFormat;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. class UDPTimeCounterServer {
  9. // Variable f�r Z�hlerstand des Servers, dieser Z�hler wird durch Anfragen der
  10. // Clients erh�ht
  11. private static long counter = 0;
  12. public static void main(String args[]) throws Exception {
  13. int udpPort = 36038;
  14. byte[] receiveData = new byte[1024];
  15. byte[] sendData = new byte[1024];
  16. DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
  17. // Socket erzeugen
  18. // Warnung, dass Socket nicht geschlossen wird unterdr�cken ;)
  19. @SuppressWarnings("resource")
  20. DatagramSocket serverSocket = new DatagramSocket(udpPort);
  21. System.out.println("Server ready... waiting for packets...");
  22. while (true) {
  23. // Anfrage vom Client empfangen
  24. DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  25. serverSocket.receive(receivePacket);
  26. // Vom Client gesendete Zahl einlesen und auf aktuellen Z�hlerstand addieren
  27. long number = new Long(new String(receivePacket.getData(), 0, receivePacket.getLength()));
  28. counter += number;
  29. // Absender IP-Adresse und Port f�r R�ckversand (Antwort) ermitteln
  30. InetAddress IPAddress = receivePacket.getAddress();
  31. int clientSrcPort = receivePacket.getPort();
  32. //System.out.println("Anfrage von Client " + IPAddress + ":" + clientSrcPort + " Zahl: " + number + " Z�hlerstand: " + counter);
  33. // Antwort vom Server senden
  34. String output = (Long.toString(counter) + " Zeit: " + System.currentTimeMillis() + " "
  35. + df.format(new Date(System.currentTimeMillis())));
  36. //System.out.println("Antwort des Servers: " + output);
  37. sendData = output.getBytes();
  38. DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientSrcPort);
  39. serverSocket.send(sendPacket);
  40. }
  41. }
  42. }