S
SERVERCLIENT
Gast
Hallo zusammen
Zualler erst muss ich gestehen, dass ich ansich nicht wirklich viel mit Java ma Hut habe.
Ich programmiere zZt eine Client - Server Applikation (Server: Java, Client: C#) und da der Server auf einem Linux Root läuft, habe ich vor den Server in Java umzusetzen.
Mein Problem besteht darin, dass der Server sofort in den catch Block fällt nachdem ich vom Client eine Message senden will (bspw ein Login).
Die run - Routine sieht folgendermassen aus:
Die Exception geschieht hier:
Stacktrace:
Der Client sendet die Daten als Byte-Array (Das ganze ist ein String, welcher in ein Byte-Array konvertiert wird):
Geht das überhaupt so?
Grz
Zualler erst muss ich gestehen, dass ich ansich nicht wirklich viel mit Java ma Hut habe.
Ich programmiere zZt eine Client - Server Applikation (Server: Java, Client: C#) und da der Server auf einem Linux Root läuft, habe ich vor den Server in Java umzusetzen.
Mein Problem besteht darin, dass der Server sofort in den catch Block fällt nachdem ich vom Client eine Message senden will (bspw ein Login).
Die run - Routine sieht folgendermassen aus:
Java:
public void run(int Port)
{
try{
//1. creating a server socket
myServer = new ServerSocket(Port, 10);
//2. Wait for connection
System.out.println("Waiting for connection");
Client = myServer.accept();
System.out.println("Connection received from " + Client.getInetAddress().getHostName());
//3. get Input and Output streams
out = new ObjectOutputStream(Client.getOutputStream());
out.flush();
in = new ObjectInputStream(Client.getInputStream());
//4. The two parts communicate via the input and output streams
do{
try{
message = (String)in.readObject();
Handler.HandleRequest(message);
}
catch(ClassNotFoundException classnot){
System.err.println("Data received in unknown format");
}
}while(true);
}
catch(IOException ioException){
ioException.printStackTrace();
}
finally{
//4: Closing connection
try{
in.close();
out.close();
myServer.close();
}
catch(IOException ioException){
ioException.printStackTrace();
}
}
}
Die Exception geschieht hier:
Java:
in = new ObjectInputStream(Client.getInputStream());
Stacktrace:
java.io.StreamCorruptedException: invalid stream header
at java.ibjectInputStream.readStreamHeader(Unknown Source)
at java.ibjectInputStream.<init>(Unknown Source)
at Server.MiniSoft_Socket.run(MiniSoft_Socket.java:29)
at MainProgram.main(MainProgram.java:13)
Der Client sendet die Daten als Byte-Array (Das ganze ist ein String, welcher in ein Byte-Array konvertiert wird):
sckt.Send(Converter.StringToByteArray(string.Format("{0}{1}", Request, Content)));
Geht das überhaupt so?
Grz