0
服務器:服務器/客戶端套接字和ObjectOutputStream的
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.");
客戶:
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.
我第一次運行服務器代碼。當我通過服務器端的調試器時,「// 1」。執行並等待客戶端連接。
然後我運行客戶端代碼。我期望發生的是「// 2」。應該叫「// 3」。在服務器代碼中,選取名稱並打印出用戶已連接的名稱。但是 ObjectOutputStream.writeChars(client.user_name)
不會觸發服務器中的讀取。我究竟做錯了什麼?我的目標是使用這些ObjectOutput/ObjectInput流成功打印來自客戶端的名稱
我理解你說的這個概念,但是我不是在寫一個字符串,然後讀取一個被轉換爲字符串的對象嗎?或者你是指別的東西? –
更新了原帖以反映我嘗試的另一件事 –
我只能重複。如果你想用readObject()來讀取,你必須用'writeObject()'來寫入。 – EJP