2
我有一个Android应用程序。它将数据发送到基于Java的程序。 Android的代码:writeUTF后的额外字符
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();
因此,在另一面,我有这一边收听5555端口和获取数据的基于Java的proram:
// 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);
但问题是,每次我有多余的字符变种“R ”。 控制台显示我:
==> <{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456"}
==> ={"password":"e516fac382793b462d6a19fa849db53a","login":"456"}
==> B{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456111414"}
正如你可以看到有陌生前symboles “{...}” 喜欢 “<” 或 “=” 或 “B”。 不明白为什么id会这么...
你记录了'jsonLoginData.toString()'以确保它不包含奇怪的符号吗? – pathfinderelite
如果您正在写入'DataOutputStream',那么您应该从'DataInputStream'中读取数据。如果你想从'InputStream'读取,然后写入'OutputStream'。不要混合流类型,否则你可能会得到意想不到的效果,就像你发现的那样。 – rossum
@rossum--他们不是自己决定抛出一个DataOutputStream。必须有一个神奇的教程,每个人似乎都在抄袭,我很想知道哪一个。 – ZhongYu