如何通过Socket发送String数组对象?

时间:2013-11-05 09:59:45

标签: java sockets

我有String数组对象。让我们说

String[] names = new String[7];

我还通过在客户端系统上使用ObjectOutputStream将其存储到文件中来使该对象持久化。我正在使用ObjectInputStream读取存储的对象。好的,好的。现在我想通过套接字将此对象发送到另一个系统。

怎么做?请帮忙。感谢。

3 个答案:

答案 0 :(得分:5)

您应该创建Socket的实例 get output stream并写信给它(例如ObjectOutputStream)。

Socket echoSocket = new Socket(hostName, portNumber);
ObjectOutputStream out = new ObjectOutputStream(echoSocket.getOutputStream());
out.writeObject(names);  

您可以在Oracle文档中找到一个示例:example this answer也应该对您有所帮助

答案 1 :(得分:2)

String Array对象实现Serializable接口,因此它可以通过网络作为字节流发送:

Socket socket = new Socket(host, port);
ObjectOutputStream outputStream = new ObjectOutputStream(
                socket.getOutputStream());
String[] names = new String[1]; // Empty at the moment
outputStream.writeObject(names); 

答案 2 :(得分:1)

回答你的问题:在Java Array和String中是可序列化的类型,因此字符串数组可以转换为字符串(!),通过网络发送而不是反序列化(转换回对象)。请参阅:How to serialize object in java,但我建议将您的数据转换为xml,json或任何其他传输数据格式,而不是将其作为字符串发送。这样可以省去很多麻烦。

更进一步 - 不是发送非常低级别的数据(套接字,流等),我建议创建更高级别的服务并通过http调用它。像restletSpring remoting这样的框架很容易设置。