Skip to content
Snippets Groups Projects
Commit 4a06626c authored by Sebastian Rieger's avatar Sebastian Rieger
Browse files

reusable sockets demo

parent c80a7ebd
No related branches found
No related tags found
No related merge requests found
/* Angelehnt an Kurose/Ross Computernetzwerke (bis 5e Java, ab 6e Python) */
package verteiltesysteme.socket.reuse;
import java.io.*;
import java.net.*;
class TCPServerReuse {
public static void main(String argv[]) throws Exception {
int tcpPort = 36037;
String clientSentence;
String capitalizedSentence;
// Server-Socket erzeugen
@SuppressWarnings("resource")
ServerSocket welcomeSocket = new ServerSocket();
// erlaubt das Wiederverwenden von Sockets, die fr die individuellen Clients genutzt werden, auch wenn der Port nocht im Status "TIME_WAIT" ist
welcomeSocket.setReuseAddress(true);
welcomeSocket.bind(new InetSocketAddress(tcpPort));
System.out.println("TCP Server started. Waiting for incoming requests... (reuseAddress="+welcomeSocket.getReuseAddress()+", timeout="+welcomeSocket.getSoTimeout() +", buffersize="+welcomeSocket.getReceiveBufferSize()+")");
while (true) {
Socket connectionSocket = welcomeSocket.accept();
System.out.println("Received request from client " + connectionSocket.getInetAddress() + ":" + connectionSocket.getPort() + " generating response...");
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
// Try/Catch hinzugefgt, nachdem bei Einsatz Amazon AWS (Healthcheck des ELB) clientSentence null war
try {
clientSentence = inFromClient.readLine();
if (clientSentence != null) {
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
connectionSocket.close();
}
}
}
/* Angelehnt an Kurose/Ross Computernetzwerke (bis 5e Java, ab 6e Python) */
package verteiltesysteme.socket.reuse;
import java.net.*;
class UDPServerReuse {
public static void main(String args[]) throws Exception {
int udpPort = 36037;
@SuppressWarnings("resource")
DatagramSocket serverSocket = new DatagramSocket(null);
// erlaubt das Wiederverwenden des Ports, mehrere Server-Prozesse knnen gleichen Port nutzen
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(udpPort));
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
System.out.println("UDP Server started. Waiting for incoming requests... (reuseAddress="+serverSocket.getReuseAddress()+", timeout="+serverSocket.getSoTimeout() +", buffersize="+serverSocket.getReceiveBufferSize()+")");
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
InetAddress IPAddress = receivePacket.getAddress();
int clientSrcPort = receivePacket.getPort();
System.out.println("Received request from client " + IPAddress + ":" + clientSrcPort + " generating response...");
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientSrcPort);
serverSocket.send(sendPacket);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment