B
Brainscanner
Gast
Hi,
ich versuche mich gerade an einem multithreaded Server mit Client. Die Klasse EmpfangsDame lauscht auf einem festen Port, nimmt Verbindungen an und reicht sie an die Arbeiterklasse durch, die als neuer Thread gestartet wird, so daß die EmpfangsDame wieder frei ist für neue Verbindungen.
Prinzipiell scheint zwar alles richtig zu sein, aber sobald ich versuche vom Server was an den Client zu schicken, krieg ich die Meldung connection reset. Wenn ich versuche was vom Client an den Server zu schicken, passiert gar nichts. Hier mal die Quellen:
Die while-Schleife der EmpfangsDame ist momentan auskommentiert. Wenn ich sie drin lasse, krieg ich keine Fehlermeldung, aber es kommen auch keine Daten durch. Es ist als ob der Server den Teil, wo er schließlich Daten empfängt, überspringt. Die Port- und Adressinformationen über den Client zeigt er mir in der Arbeiter Klasse schließlich auch noch an.
ich versuche mich gerade an einem multithreaded Server mit Client. Die Klasse EmpfangsDame lauscht auf einem festen Port, nimmt Verbindungen an und reicht sie an die Arbeiterklasse durch, die als neuer Thread gestartet wird, so daß die EmpfangsDame wieder frei ist für neue Verbindungen.
Prinzipiell scheint zwar alles richtig zu sein, aber sobald ich versuche vom Server was an den Client zu schicken, krieg ich die Meldung connection reset. Wenn ich versuche was vom Client an den Server zu schicken, passiert gar nichts. Hier mal die Quellen:
Code:
import java.net.*;
import java.io.*;
public class EmpfangsDame
{
public static void main(String[] args)
{
try
{
ServerSocket s;
Socket c;
s = new ServerSocket(1234);
System.out.println("Server gestartet...");
//while(true)
//{
c = s.accept();
Thread t = new Arbeiter(c);
t.start();
//}
}
catch(Exception e)
{ System.out.println(e); }
}
}
Die while-Schleife der EmpfangsDame ist momentan auskommentiert. Wenn ich sie drin lasse, krieg ich keine Fehlermeldung, aber es kommen auch keine Daten durch. Es ist als ob der Server den Teil, wo er schließlich Daten empfängt, überspringt. Die Port- und Adressinformationen über den Client zeigt er mir in der Arbeiter Klasse schließlich auch noch an.
Code:
import java.net.*;
import java.io.*;
public class Arbeiter extends Thread
{
public static Socket c;
Arbeiter(Socket from)
{
this.c = from;
}
public void run()
{
try
{
System.out.println("Arbeiter: Client verbunden: " + c.getInetAddress() + " von Port " + c.getPort());
BufferedReader networkIn;
networkIn = new BufferedReader(new InputStreamReader(c.getInputStream()));
String Anfrage = networkIn.readLine();
System.out.println("Das hat der Client geschickt: " + Anfrage);
c.close();
}
catch(Exception e)
{ System.out.println(e); }
}
}
Code:
import java.io.*;
import java.net.*;
public class Client
{
public static Socket s;
public static void main(String[] args)
{
PrintWriter networkOut;
try
{
s = new Socket("127.0.0.1", 1234);
System.out.println("Client: habe verbunden");
networkOut = new PrintWriter(s.getOutputStream());
networkOut.print("Hallo, ich bin's, der Client");
networkOut.flush();
System.out.println("Client: Habe Daten verschickt");
}
catch(Exception e)
{
System.out.println(e);
}
}
}