gpt4 book ai didi

java - 为什么我的绳子无法正确穿过 socket ?

转载 作者:行者123 更新时间:2023-12-02 00:22:51 26 4
gpt4 key购买 nike

05-16 14:29:16.935: W/System.err(20981): java.lang.NumberFormatException: 
unable to parse '��������������������' as integer

这几乎就是我的 Android 应用程序在应该接收 10 字节长字符串时显示的错误消息(在错误消息中显示为 20 个不同的字节。

BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream(), "UTF-8"));
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));

^^ 我添加了 UTF-8。

String count = String.format("%10s", 
(new Integer(result.length())).toString()).replace(" ", "0");

这就是我获取发送的字符串的方法,并且它工作正常,因为它在 PC 端日志上正确显示。

但是,在Android端,无法正确接收。

BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream(), "UTF-8"));
CharBuffer buf = CharBuffer.allocate(1024*1024);
in.read(buf);
char[] buffer = new char[10];
buf.get(buffer, 0, 10);
cont = Integer.parseInt(new String(buffer));

这就是我获取字符串的方法,但它似乎无法正常工作。有更多经验的人可以帮助我理解为什么这不起作用吗?

最佳答案

Java 字符串是 Unicode,每个字符 2 字节事务。很高兴知道这一点。

您可能应该告诉流字符串是如何编码的。我推荐使用 UTF-8。

我建议您暂时忘记数字解析位,看看您是否能理解来回发送的内容。不可读字符的异常没有用。

将您的问题简化为简单的发送和接收并记录收到的内容。可见性和透明度是您的 friend 。在您知道自己要得到什么之前,很难看出需要什么。

关于java - 为什么我的绳子无法正确穿过 socket ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10619679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com