我正在尝试开发一个小应用程序,它通过套接字接收一些数据并根据它接收的数据,它为用户输出一个Toast消息。我得到数据,但数据显然无法正确读取。这是相同的相关部分。
int red = -1;
byte[] buffer = new byte[1024]; // a read buffer of 5KiB
byte[] redData;
while ((red = cs.getInputStream().read(buffer)) > -1) {
String redDataTextappend;
redData = new byte[red];
redDataTextappend = new String(redData);
Log.w("Data got",redDataTextappend);
if (redDataTextappend == "hi")
{
//Display Toast message using runonUIThread(new Runnable);
}
else
{//Display Message Using runonUITHread(new Runnable);
}
此代码在单独的线程上运行,因为android不允许在单独的线程上进行网络操作。
4钻石是android studio显示的数据,cs是接受连接的套接字的名称。
感谢。
答案 0 :(得分:1)
您只是打印编码为零字节的字符串,因为您从不复制读入的数据。
如果数组包含任意数据,将字节数组转换为十六进制字符串会更有意义:请参阅this question的答案以获取该选项。
如果数组包含某些字符集中String的编码,例如UTF-8,则执行以下操作:
byte[] redData = Arrays.copyOf(buffer, red);
String redDataTextappend = new String(redData, Charset.forName("UTF-8"));
Log.w("Data got",redDataTextappend);