Hallo!
Ich möchte eine Client-Server Verbindung erstellen. Ich bin gerade beim Programmieren des Servers. Ich will, dass wenn ein Client zum Server verbindet, ein neuer Thread für diese Verbindung gestartet wird. Dies löse ich dadurch, dass ich eine Klasse erstelle, die von Socket abgeleitet wird und Runnable implementiert. Mein Problem: ServerSocket.accept() liefert ein Socket zurück, wie kann ich dieses Socket meiner eigenen Klasse zuweisen?
Server-Haupt-Thread wartet auf Verbindung:
Meine Klasse, der Client-Thread des Servers:
Grüße
Faux
Ich möchte eine Client-Server Verbindung erstellen. Ich bin gerade beim Programmieren des Servers. Ich will, dass wenn ein Client zum Server verbindet, ein neuer Thread für diese Verbindung gestartet wird. Dies löse ich dadurch, dass ich eine Klasse erstelle, die von Socket abgeleitet wird und Runnable implementiert. Mein Problem: ServerSocket.accept() liefert ein Socket zurück, wie kann ich dieses Socket meiner eigenen Klasse zuweisen?
Server-Haupt-Thread wartet auf Verbindung:
Code:
public void run()
{
while (!server.isClosed())
{
try
{
/*
* Wait for client to connect.
*/
server.accept(); // Hier bekomme ich ein Socket, das mit dem Client verbunden ist
// zurück. Dieses muss ich der Instanz client zuweisen...
Client client = new Client(); // Hier instanziiere ich meine Klasse (siehe Unten)
System.out.println("Client connected: " + client.getLocalAddress().getHostAddress());
/*
* Start new Thread for each client.
*/
Thread clientThread = new Thread(client);
clientThread.start();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Meine Klasse, der Client-Thread des Servers:
Code:
public class Client extends Socket implements Runnable
{
public void run()
{
try
{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(getInputStream()));
/*
* Sending PING.
*/
while (isConnected())
{
writer.write("PING.\n");
System.out.println("Sending: PING");
Thread.sleep(2500);
}
}
}
Grüße
Faux