forked from srieger/verteilte-systeme-bsc-ai-examples
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
48 lines
1.4 KiB
package verteiltesysteme.socket.multithread;
|
|
|
|
import java.io.IOException;
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.net.InetAddress;
|
|
|
|
class UDPServerMulti implements Runnable {
|
|
DatagramSocket serverSocket;
|
|
DatagramPacket receivePacket;
|
|
|
|
UDPServerMulti(DatagramSocket serverSocket, DatagramPacket receivePacket) {
|
|
this.receivePacket = receivePacket;
|
|
this.serverSocket = serverSocket;
|
|
}
|
|
|
|
public static void main(String argv[]) throws Exception {
|
|
int udpPort = 36037;
|
|
|
|
DatagramSocket serverSocket = new DatagramSocket(udpPort);
|
|
byte[] receiveData = new byte[1024];
|
|
|
|
while (true) {
|
|
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
|
|
serverSocket.receive(receivePacket);
|
|
// IST DAS SINNVOLL? Unter welchen Bedingungen? ;-)
|
|
new Thread(new UDPServerMulti(serverSocket, receivePacket)).start();
|
|
}
|
|
}
|
|
|
|
public void run() {
|
|
byte[] sendData = new byte[1024];
|
|
String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
|
|
|
|
InetAddress IPAddress = receivePacket.getAddress();
|
|
int clientSrcPort = receivePacket.getPort();
|
|
|
|
String capitalizedSentence = sentence.toUpperCase();
|
|
sendData = capitalizedSentence.getBytes();
|
|
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientSrcPort);
|
|
try {
|
|
serverSocket.send(sendPacket);
|
|
} catch (IOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|