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.
|
|
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; import redis.clients.jedis.Jedis;
class TCPTimeCounterServer { public static void main(String args[]) throws Exception { int tcpPort = 36038; String redisClusterURL = "vertsys-ec1-0001-002.71rxr9.0001.euc1.cache.amazonaws.com"; 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()));
// Verbindung zum Redis Cluster (Amazon ElastiCache)
Jedis jedis = new Jedis(redisClusterURL, 6379); System.out.println("Connected to redis server"); // check whether server is running or not
//System.out.println("redis server is running: " + jedis.ping());
//System.out.println("redis server cluster info: " + jedis.clusterInfo());
// Variable f�r Z�hlerstand des Servers, dieser Z�hler wird durch Anfragen der
// Clients erh�ht
jedis.incrBy("vertsys-counter", number); long counter = new Long(jedis.get("vertsys-counter")); jedis.close(); System.out.println("TTL:" + jedis.ttl("vertsys-counter")); 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(); } } } }
|