gpt4 book ai didi

Java Sockets - 从客户端向服务器发送数据

转载 作者:行者123 更新时间:2023-12-01 06:11:45 25 4
gpt4 key购买 nike

我的目标:将局部变量从客户端程序发送到服务器程序。

我已经连接了客户端和服务器,并且我知道如何从客户端向服务器发送字符串消息。

示例:

private void sendToServer(Socket clientSocket) throws IOException{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
writer.write("You have connected to the server.");
writer.flush();
writer.close();
}

上面的代码完美运行并发送消息。

但是如果我想在客户端和服务器之间发送数据/变量,我该怎么办?

例如,如果我有一个变量 float a = 0.5 或一个二维整数数组等,我将如何将其从客户端发送到服务器,反之亦然?

例如,我尝试使用 writer.write(a) 来做同样的事情,但是 writer.write() 的输入是有限的,所以我感觉我的做法不正确。

如果除了使用 BufferedReaders&BufferedWriters 之外还有更好的方法来尝试发送变量,您能让我知道吗?

谢谢!

最佳答案

在处理java客户端/服务器通信时,如果您完全控制两端并且预计设计不会改变,则可以通过 Object*Stream 类直接使用 Java 序列化直接执行编码.

示例:

 ObjectOutputStream output = new ObjectOutputStream(bufferedSocketStream);

output.writeInt(42); // Write a primitive integer
output.writeObject("Hello World"); // Write a string as an object
output.writeObject(myClass); // Write a class instance that you've implemented the "Serialize" interface

output.flush();

/* INPUT */
ObjectInputStream inputStream = new ObjectInputStream(bis);
int value = inputStream.readInt(); // Will receive 42
Object value2 = inputStream.readObject(); // Will receive "Hello World"
Object value3 = inputStream.readObject(); // Will receive your serialized class instance

(参见https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.htmlhttps://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html)

关于Java Sockets - 从客户端向服务器发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182812/

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