java - 有没有办法通过套接字发送带有 DataOutputStream 的 Point 数组?

标签 java arrays sockets datainputstream dataoutputstream

我想通过套接字使用 DataOutputStream 发送一个点数组 (Point points[] = new point[20]),并能够使用另一端的 DataInputStream 正确读取它。我不能单独发送每个元素,它必须作为整个数组发送并且能够被解释为整个数组。

最佳答案

参见例如Advanced Socket Programming 中的“传输自定义对象”部分:

  1. 将您的数据放入可序列化的 类,例如 MyData。 (在您的情况下,您实际上不必这样做,因为数组实现了可序列化,但稍后您有可能希望与点数组一起发送其他数据......)
  2. 发送者端,创建一个 MyData 对象并用数据填充它。将 socket.getOutputStream() 转换为 ObjectOutputStream , 和 调用其 writeObject 方法来发送 MyData 对象。
  3. 接收器上 侧面,将 socket.getInputStream() 转换为 ObjectInputStream ,并调用 它的 readObject 方法来接收对象(您必须强制转换 到 MyData)。

无论如何,我也会考虑使用RMI 。例如,您可以创建一个 PointServer,将其注册到 RMI 注册表中,然后通过客户端应用程序中的简单函数调用来访问它。 RMI 比套接字更容易使用。例如,您不必设计协议(protocol),只需为分布式对象定义方法。

关于java - 有没有办法通过套接字发送带有 DataOutputStream 的 Point 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129040/

相关文章:

java - 初学者 : Soap Request Response call from java

java - 我有一个包含多个 JSON 对象的数据字符串,如何将字符串中的所有 JSON 对象存储在填充对象的数组中?

c - "SO_REUSEPORT"(OS X) 或 "SO_REUSEADDR"(Linux) 真的允许用户对多个套接字使用 recvfrom 吗?

java - ReadableByteChannel.read(ByteBuffer dest) 读取上限为 8KB。为什么?

java - 使用Firebase身份验证但需要提高安全性

java - 在 while 循环中运行多次迭代

java - @Around 在 Spring AOP 中没有被调用

java - 我很困惑的简单Java数组语法

javascript - App Script 调试成功但执行失败,为什么?

linux - 通过 sendto() 的 UDP 广播返回 "Can' t assign requested address"on OS/X but not Linux