通过Socket连接发送String []数组

Dun*_*mer 2 java sockets arrays

所以我试图发送一个String[]打开的套接字连接.我目前有这个代码:

发送:

public void sendData() {
    try {
        OutputStream socketStream = socket.getOutputStream();
        ObjectOutputStream objectOutput = new ObjectOutputStream(socketStream);
        objectOutput.writeObject(new String[] {"Test", "Test2", "Test3"});

        objectOutput.close();
        socketStream.close();

    } catch (Exception e) {
        System.out.println(e.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

Recieving:

public Object readData() {
    try {
    InputStream socketStream = socket.getInputStream();
    ObjectInputStream objectInput = new ObjectInputStream(new GZIPInputStream(socketStream));
    Object a = objectInput.readObject();
      return a;
    } catch(Exception e) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我收到String[]另一端之后,我希望能够像我通常那样迭代它,这样我就能得到这些值.我当前的代码似乎不起作用,因为它返回null值.

这可能吗?

Ste*_*n C 8

我当前的代码似乎不起作用,因为它返回null作为值.

这也是很明显的原因!

} catch(Exception e) {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

这说"如果出现问题,请回复null,不要告诉我问题是什么"!

捕捉和挤压这样的例外是不好的做法.至少,您应该尝试打印异常堆栈跟踪.在编写器代码中,您执行此操作:

System.out.println(e.toString());
Run Code Online (Sandbox Code Playgroud)

这比什么都好,但它只打印异常名称和消息.你应该真的打印完整的堆栈跟踪...像这样:

e.printStackTrace(System.out);
Run Code Online (Sandbox Code Playgroud)

对于生产质量代码,您应该记录异常,而不仅仅是将消息写入标准输出.

一旦有了堆栈跟踪,就可以找出真正的问题并修复它.