我想通过套接字使用 DataOutputStream 发送一个点数组 (Point points[] = new point[20]),并能够使用另一端的 DataInputStream 正确读取它。我不能单独发送每个元素,它必须作为整个数组发送并且能够被解释为整个数组。
最佳答案
参见例如Advanced Socket Programming 中的“传输自定义对象”部分:
- 将您的数据放入可序列化的 类,例如 MyData。 (在您的情况下,您实际上不必这样做,因为数组实现了可序列化,但稍后您有可能希望与点数组一起发送其他数据......)
- 在发送者端,创建一个 MyData 对象并用数据填充它。将 socket.getOutputStream() 转换为 ObjectOutputStream , 和 调用其 writeObject 方法来发送 MyData 对象。
- 在接收器上 侧面,将 socket.getInputStream() 转换为 ObjectInputStream ,并调用 它的 readObject 方法来接收对象(您必须强制转换 到 MyData)。
无论如何,我也会考虑使用RMI 。例如,您可以创建一个 PointServer,将其注册到 RMI 注册表中,然后通过客户端应用程序中的简单函数调用来访问它。 RMI 比套接字更容易使用。例如,您不必设计协议(protocol),只需为分布式对象定义方法。
关于java - 有没有办法通过套接字发送带有 DataOutputStream 的 Point 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129040/