gpt4 book ai didi

Java:通过 Socket 发送和接收对象

转载 作者:行者123 更新时间:2023-11-30 07:05:53 26 4
gpt4 key购买 nike

我是一名学生,正在学习网络编程,并且遇到了一些问题。

这是我的客户:

public class Test2Client_Tranfer_An_Obj {

Socket socket = null;
ObjectOutputStream out;
ObjectInputStream in;

public Test2Client_Tranfer_An_Obj() {
try {
socket = new Socket("localhost", 12345);

out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
System.out.println("Ready");

System.out.println("" + in.readUTF());
System.out.println("" + in.readUTF());
System.out.println("Recived");

out.writeUTF("hihi");

System.out.println("Sended");




} catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String[] args) {

System.out.println("Client");
Test2Client_Tranfer_An_Obj test = new Test2Client_Tranfer_An_Obj();
}

}

这是我的服务器:

public class Test2Server_Tranfer_An_Obj {

ServerSocket serverSocket;
ObjectOutputStream out;
ObjectInputStream in;

public Test2Server_Tranfer_An_Obj() {

try {
serverSocket = new ServerSocket(12345);
Socket socket = serverSocket.accept();

out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
System.out.println("Ready!");
out.writeUTF("huhu");
out.writeUTF("hoho");
System.out.println("Sended");

String s = in.readUTF();
System.out.println("" + s);
System.out.println("Recived");

} catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String[] args) {
System.out.println("Server");
Test2Server_Tranfer_An_Obj demo = new Test2Server_Tranfer_An_Obj();

}

}

但是,当我运行我的程序时,结果是:

服务器控制台

Server Ready! Sended

客户端控制台

Client Ready

谁能告诉我为什么以及我能做什么?感谢您的阅读!希望能收到您的答复

最佳答案

在这种情况下,对象流就显得有些过分了。您实际上并没有使用 writeObject/readObject,而是使用 DataInputStreamDataOutputStream 来执行您想要的操作。

在这种特殊情况下,对象流会被缓冲,这意味着小写入会被缓冲,直到您 flush()close() 流以提高性能。由于您两者都没有这样做,因此 writeUTF 仅写入内存,而不写入套接字。

参见默认情况下缓冲数据流。

关于Java:通过 Socket 发送和接收对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com