【发布时间】:2012-11-06 17:39:35
【问题描述】:
通过套接字,我将信息从用 C 编写的程序发送到用 Java 编写的程序。
通过 C 语言的程序,我通过一个 char 数组(使用 Internet 套接字)发送两个字节,并且在 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
....
}
}
任何解决这个问题的建议我都会非常感激。
在此先感谢您,格斯。
【问题讨论】:
-
如果你能隔离出一个以同样方式失败的“最小案例”,展示 C 源代码和 Java 源代码,它(可能)会有所帮助。
-
您的代码可能会在很多方面出错。我同意 Vatine 的观点,即查看代码将帮助我们帮助您。