2016-04-05 5 views
0

Server:Server/Client-Sockets und Object

Socket client_socket = server_back_end.server_socket.accept(); //1. 

    ClientInfo new_client = new ClientInfo(
    new ObjectOutputStream(client_socket.getOutputStream()), //writer 
    new ObjectInputStream(client_socket.getInputStream()), //reader 
    "blah, about to be re-written" 
); 

new_client.user_name = (String) new_client.reader.readObject(); //3. "bob" 
//new_client.user_name = new_client.reader.readLine(); //this doesnt work either 

System.out.println("Client " + new_client.user_name + " has connected."); 

Auftraggeber:

Socket client_socket = new Socket(); 
client_socket.connect(new InetSocketAddress(server_ip, server_port), 500); 
client_front_end.display("<<Connection Successful.>>\n"); 

String user_name = txtfield.getText(); //"bob" 

client = new ClientInfo(
    new ObjectOutputStream(client_socket.getOutputStream()), //writer 
    new ObjectInputStream(client_socket.getInputStream()), //reader 
    user_name); 

client.writer.writeChars(client.user_name); //2. 

ich zuerst den Server-Code auszuführen. Wenn ich den Debugger auf der Serverseite durchlaufe, "// 1." wird ausgeführt und wartet darauf, dass ein Client eine Verbindung herstellt.

Dann ich den Client-Code ausführen. Was ich erwarte, ist "// 2". sollte "// 3." Wählen Sie im Servercode den Namen und drucken Sie, dass der Benutzer eine Verbindung hergestellt hat. Aber das ObjectOutputStream.writeChars(client.user_name) löst das Lesen im Server nicht aus. Was mache ich falsch? Mein Ziel ist es, den Namen aus dem Client mit diesen ObjectOutput/ObjectInput-Streams erfolgreich zu drucken

Antwort

1

Sie lesen ein Objekt, aber Sie schreiben kein Objekt. Du schreibst Zeichen. readObject() kann nur die Ausgabe von writeObject() lesen. readInt() kann nur die Ausgabe von writeInt() lesen. Und so weiter.

+0

Ich verstehe das Konzept, das Sie sagen, aber schreibe ich nicht eine Zeichenfolge und dann ein Objekt lesen, das zu einer Zeichenfolge gegossen wird? Oder beziehst du dich auf etwas anderes? –

+0

den ursprünglichen Beitrag aktualisiert, um eine andere Sache widerzuspiegeln, die ich versuchte –

+0

kann ich nur wiederholen. Wenn Sie mit 'readObject()' lesen wollen, müssen Sie mit 'writeObject()' schreiben. – EJP

Verwandte Themen