服务器:
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()
的输出。 readInt()
只能读取writeInt()
的输出。等等。
关于java - 服务器/客户端套接字和 ObjectOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415262/