无法查看TCP数据包发送程序(数据包服务器)发送的数据

时间:2017-07-22 06:48:25

标签: android multithreading sockets tcp

我正在尝试开发一个小应用程序,它通过套接字接收一些数据并根据它接收的数据,它为用户输出一个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不允许在单独的线程上进行网络操作。

Logcat

4钻石是android studio显示的数据,cs是接受连接的套接字的名称。

感谢。

1 个答案:

答案 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);