通过套接字,我将信息从用C编写的程序发送到用Java编写的程序。使用Java char数组处理C char数组
通过C程序,我通过char数组发送两个字节(使用互联网套接字),并且接收到的Java信息也存储在char数组中。
我的主要问题是Java数组中接收到的信息与C程序传输的信息无法正确对应。
我读过Java中的字符长度为16位,C中的字符长度为8位。这可能是问题所在,但我不知道如何处理/解决问题。
C代码发送的信息是:
char buffer[256];
bzero(buffer,256);
n = read(fd, buffer, 255); // getting info from an uart port, which works properly
n = write(sockfd,buffer,3); // send the information through the socket
Java代码(Android应用程式)的部分如下:
char[] buffer = new char[256];
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int readX = in.read(buffer, 0, 3);
if (readX > 0) { // I am using a handler to manipulate the info
Message msg = new Message();
msg.obj = buffer;
mHandler.sendMessage(msg);
}
....
// Part of the handler is the following:
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
char[] buffer;
buffer = (char[])msg.obj; // the information here is different from the one sent from the C program
....
}
}
任何建议来解决这个问题,我会真的很感激它。
在此先感谢,Gus。
如果您可以隔离以相同方式失败的“最小案例”,则可能会(可能)提供C源代码和Java源代码。 – Vatine
可能有很多方法让你的代码出错。我同意Vatine看到代码会帮助我们帮助你。 – NPE