Java套接字 - 从客户端向服务器发送数据

时间:2015-10-17 04:40:11

标签: java sockets client-server

我的目标:从客户端程序向服务器程序发送本地变量。

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

示例:

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之外的变量,你能告诉我吗?

谢谢!

1 个答案:

答案 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.htmlhttps://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html