Konstellation: Fritzbox, zwei Laptops, einer nur mit einem Clientprogramm, der andere mit einem Server- und einem Clientprogramm. Die Clientprogramme sind auf beiden Rechnern identisch.
Problem: Die Client-Server-Kommunikation läuft problemlos, wenn Client und Server auf unterschiedlichen Rechnern laufen. Rufe ich den Server aber vom Client auf dem Server-Laptop auf, so ist nur bis zum letzten Senden des Server-OutputStreams alles ok. Den OutputStream sendet der Server zwar, aber der Client empfängt nichts.
Meine Vermutung: Der Server streamt ins Nirwana (ohne Fehlermeldung). Aber warum?
Hier der der Servercode:
[CODE lang="java" title="Aufruf"]new Thread(){
public void run(){
new LogInServer();
}
}[/CODE]
Thread, da anschließend noch andere Server aufgerufen werden.
[CODE lang="java" title="LogInServer:"]try{
ServerSocket serverSocket= new ServerSocket(70);
while(true){
Socket clientSocket = serverSocket.accept();
new LogInThread(clientSocket);
}
}catch(IOException e){...}[/CODE]
LogInThread:
Client:
Problem: Die Client-Server-Kommunikation läuft problemlos, wenn Client und Server auf unterschiedlichen Rechnern laufen. Rufe ich den Server aber vom Client auf dem Server-Laptop auf, so ist nur bis zum letzten Senden des Server-OutputStreams alles ok. Den OutputStream sendet der Server zwar, aber der Client empfängt nichts.
Meine Vermutung: Der Server streamt ins Nirwana (ohne Fehlermeldung). Aber warum?
Hier der der Servercode:
[CODE lang="java" title="Aufruf"]new Thread(){
public void run(){
new LogInServer();
}
}[/CODE]
Thread, da anschließend noch andere Server aufgerufen werden.
[CODE lang="java" title="LogInServer:"]try{
ServerSocket serverSocket= new ServerSocket(70);
while(true){
Socket clientSocket = serverSocket.accept();
new LogInThread(clientSocket);
}
}catch(IOException e){...}[/CODE]
LogInThread:
Java:
...
public void run(){
try{
String clientsLaptopName = "";
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
byte[] buffer = new byte[in.available()]
in.read(buffer)
for(byte b:buffer){
clientsLaptopName += (char)b;
}
// Es folgt Registrierungs-Check und Username ermitteln
// Das Ergebnis wird in den String 'msg' gespeichert
byte[] data = msg.getBytes();
out.write(data);
out.flush();
in.close();
out.close()
clientSocket.close();
}catch(IOException e){e.printStackTrace();}
Client:
Java:
try{
adrIn = InetAddress.getByName("ServerLaptop");
localIn = InetAddress.getLocalHost();
localStrIn = localIn.getHostName();
sockIn = new Socket(adrIn,70);
// Namen des Client-Laptop schicken
byte[] data= localStrIn.getBytes();
out.write(data);
//Message vom Server empfangen - und das klappt nicht
String msg="";
int c;
while(c = in.read() != -1){
msg += (char)c;
}
}catch(IOException e){e.printStackTrace();}