Android 无法查看TCP数据包发送程序(数据包服务器)发送的数据
我正在尝试开发一个小应用程序,它通过套接字接收一些数据,并根据接收到的数据为用户打印一条toast消息。我正在获取数据,但数据显然无法正确读取。下面是相关部分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
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等方法,但都不起作用。你能给出一些想法吗?