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

Android 无法查看TCP数据包发送程序(数据包服务器)发送的数据,android,multithreading,sockets,tcp,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 redDat

我正在尝试开发一个小应用程序,它通过套接字接收一些数据,并根据接收到的数据为用户打印一条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是接受连接的套接字的名称


谢谢。

您只需打印编码为零字节的字符串,因为您从未复制读入的数据

如果数组包含任意数据,则将字节数组转换为十六进制字符串更有意义:有关选项,请参阅的答案

如果数组包含某个字符集中的字符串编码,例如UTF-8,则执行以下操作:

byte[] redData = Arrays.copyOf(buffer, red);
String redDataTextappend = new String(redData, Charset.forName("UTF-8"));
Log.w("Data got",redDataTextappend);

我通过直接读取字节值来解决这个问题。要以字节或字符串的形式发送数据,我应该使用什么方法?@DhruvMarwha:这取决于应用程序的具体情况。我尝试过readUTF等方法,但都不起作用。你能给出一些想法吗?