java - writeUTF 后的额外字符

标签 java android

我有一个 Android 应用程序。它将数据发送到基于 Java 的程序。安卓代码:

      Socket socket = new Socket(InetAddress.getByName("10.0.3.2"), 5555);

        OutputStream sout = socket.getOutputStream();
        DataOutputStream out = new DataOutputStream(sout);


        out.writeUTF(jsonLoginData.toString()); 

//       IN jsonLoginData i put some values in another part of code
//        jsonLoginData = new JSONObject();
//        jsonLoginData.put("login",login);
//        jsonLoginData.put("password",password);

        out.flush();
        out.close();

所以在另一方面我有基于 Java 的 proram,它正在监听 5555 端口并获取数据:

// var "s" is a socked listening 5555 port 

InputStream is = s.getInputStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(s.getInputStream()));

  String line;
  String r = "";
  StringBuilder content = new StringBuilder(); 

      // read from the urlconnection via the bufferedreader
            while ((line = bufferedReader.readLine()) != null)
           {
             r = r + line;
           }

   bufferedReader.close();

    System.out.println("\n ==>" + r);

但问题是每次我在 var "r"中有额外的字符。 控制台向我显示:

==> <{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456"} 

==> ={"password":"e516fac382793b462d6a19fa849db53a","login":"456"} 

==> B{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456111414"} 

如您所见,“{...}”之前有一些奇怪的符号,例如“<”或“=”或“B”。 不明白为什么我会这样......

最佳答案

不要使用 DataOutputStream。只需将字节写入 OutputStream

OutputStream sout = socket.getOutputStream();
byte[] bytes = jsonLoginData.toString().getBytes("UTF-8");
sout.write(bytes);

关于java - writeUTF 后的额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288846/

相关文章:

Java 位无符号移位 (>>>) 给出奇怪的结果

java - 从 Axis2 WS - java 中的骨架返回后是否有可能丢失对象

java - 等待批处理结束

java - 使用 Executors.defaultThreadFactory().newThread 的原因是什么?

java - 应用程序的布局和 View 可见性

android - 卡片的 RecyclerView 不显示任何内容

java - 想要格式化 JTextArea 中的文本

java - addRule(RelativeLayout.BELOW, id) 不起作用

android - Nativescript 应用程序不打印到控制台

android - 从 RealmList 中删除 RealmObject