【问题标题】:How to send String array Object over Socket?如何通过 Socket 发送字符串数组对象?
【发布时间】:2013-11-05 18:24:19
【问题描述】:

我有字符串数组对象。让我们说

String[] names = new String[7];

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

怎么做?请帮忙。谢谢。

【问题讨论】:

标签: java sockets


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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); 
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        相关资源
        最近更新 更多