ソケットを介して、Cで書かれたプログラムからJavaで書かれたプログラムに情報を送信しています。
Cのプログラムを介して、(インターネットソケットを使用して)char配列を介して2バイトを送信し、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
....
}
}
この問題を解決するための提案があれば、本当にありがたいです。
よろしくお願いします、ガス。