服务器
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流
答案 0 :(得分:1)
您正在阅读一个对象,但您不是在写一个对象。你正在写字符。 readObject()
只能读取writeObject()
的输出。 readInt()
只能读取writeInt()
的输出。等等。