【问题标题】:Sending objects using sockets - JAVA使用套接字发送对象 - JAVA
【发布时间】:2013-09-02 11:14:52
【问题描述】:

所以我正在使用套接字创建一个应用程序。我有发送消息的客户端,它使用writeObject(new String("Name|Message")); 传递到服务器。

我使用readObject();阅读了服务器中的消息

我正在尝试将此字符串对象传递给数组。但我得到[Ljava.lang.String;@6bb9ae1a

这是我正在尝试的:

ObjectInputStream saida = new ObjectInputStream(client.getInputStream());
String[] read = saida.readObject().toString().split("|");
System.out.println(read);

我也尝试为每个拆分创建变量:

   String readm = read[1];
   String readn = read[0];

但它返回我 "" 作为名称和 "A" 作为消息 (?)

哇,套接字正在工作,因为如果我这样做 (String) saida.readObject(); 它会返回正常字符串。

【问题讨论】:

  • 查看过''String''s ''toString''方法的Contract吗?
  • 是的,它不起作用,正如我所说,它返回 [Ljava.lang.String;@6bb9ae1a.
  • 对不起。加布里埃尔是对的……想错了方向。
  • [Ljava.lang.String;@6bb9ae1a 是字符串数组的输出,而不是字符串的输出。您必须单独打印数组中的每个字符串。
  • Gabriel,在发布任何帖子之前,请阅读问题和正确答案。

标签: java arrays sockets stream


【解决方案1】:

这样使用:

saida.readObject().toString().split("\\|"); 

然后

String readm = read[1];
String readn = read[0];

因为管道符号是特殊字符,分割特殊字符是不同的。并且不能使用 systemoutprintln 打印字符串数组。

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 2021-01-11
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2015-02-28
    • 2014-03-24
    • 2017-03-20
    相关资源
    最近更新 更多