我的目标:从客户端程序向服务器程序发送本地变量。
我连接了客户端和服务器,我知道如何从客户端向服务器发送字符串消息。
示例:
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
或一个2d整数数组,等等,我将如何从客户端发送到服务器,反之亦然?
例如,我尝试使用writer.write(a)
做同样的事情,但是writer.write()
的输入是有限的,所以我觉得我正在接近它。
如果我有更好的方法尝试发送除使用BufferedReaders和BufferedWriters之外的变量,你能告诉我吗?
谢谢!
答案 0 :(得分:-1)
在处理 java 客户端/服务器通信时,如果您完全控制两端并且不预期设计发生变化,您可以直接使用Java序列化通过Object *直接执行编码流类。
示例:
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.html和https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html)