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.

57 lines
2.1 KiB

package verteiltesysteme.aws;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
class TCPTimeCounterServer {
// Variable für Zählerstand des Servers, dieser Zähler wird durch Anfragen der
// Clients erhöht
private static long counter = 0;
public static void main(String args[]) throws Exception {
int tcpPort = 36038;
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
// Socket erzeugen
// Warnung, dass Socket nicht geschlossen wird unterdrücken ;)
@SuppressWarnings("resource")
ServerSocket serverSocket = new ServerSocket(tcpPort);
System.out.println("TCP Time Counter Server ready... waiting for packets...");
while (true) {
// Auf Anfrage vom Client warten
Socket connectionSocket = serverSocket.accept();
// Anfrage vom Client empfangen
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
// Vom Client gesendete Zahl einlesen und auf aktuellen Zählerstand addieren
long number = new Long(new String(inFromClient.readLine()));
counter += number;
System.out.println("Anfrage von Client " + connectionSocket.getInetAddress() + ":" + connectionSocket.getPort() + " Zahl: " + number + " Zählerstand: " + counter);
// Try/Catch hinzugefügt, nachdem bei Einsatz Amazon AWS (Healthcheck des ELB) clientSentence null war
try {
// Antwort vom Server senden
String output = (Long.toString(counter) + " Zeit: " + System.currentTimeMillis() + " "
+ df.format(new Date(System.currentTimeMillis())));
System.out.println("Antwort des Servers: " + output);
// Zeilenumbruch anfügen, da Client mit readLine auf komplette Zeile wartet
outToClient.writeBytes(output + '\n');
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (NullPointerException npe) {
npe.printStackTrace();
}
}
}
}