java - 通过 Socket 连接发送一个 String[] 数组

标签 java arrays sockets

所以我试图通过一个开放的套接字连接发送一个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());
    }
}

接收:

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;
    }
}

在我收到另一端的 String[] 后,我希望能够像往常一样遍历它,以便我可以获得值。我当前的代码似乎无法正常工作,因为它返回 null 作为值。

这可能吗?

最佳答案

My current code doesn't seem to works as it returns null as the value.

原因也很明显!

} catch(Exception e) {
    return null;
}

意思是“如果出现问题,返回 null 并且不要告诉我问题出在哪里”!

像这样捕获和压缩异常是错误的做法。至少,您应该尝试打印异常堆栈跟踪。在编写器代码中,您可以这样做:

System.out.println(e.toString());

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

e.printStackTrace(System.out);

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

一旦有了堆栈跟踪,您就可以找出真正的问题所在并加以解决。

关于java - 通过 Socket 连接发送一个 String[] 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867880/

相关文章:

java - 线程 "main"java.lang.ClassNotFoundException : tn. hadoop.WordCount 中的异常

java - 25个奇偶随机数生成器

java - openssl des3在java中解密

java - 使用 x 和 y 坐标制作 2d 网格的 1d 数组(x 和 y 不是指 2d 网格的行和列)

c# - 为什么套接字被阻止接收,而我在另一个线程上 sleep ?

java - 使用套接字发送请求行+文件 - java

windows - UDP 监听套接字在网络配置更改后停止监听

java - OSGI 包启动期间出现 ClassNotFoundException

php - 通过字符串键 x 访问数组,其中 x 为 "123"

javascript - 我们如何在 Angular 中获取表单值作为具有多个属性的对象?