C99 クライアントが Java サーバーと通信できるようにしようとしています。ただし、Java サーバーが受信するデータは、送信されたデータと同じではありません。(例: @x�@Ófl/ú.��@¨���������������Û¢ÁBp'ˇ¡`Ôfl/)
エンコーディングの問題だと考えましたが、レンガの壁にぶつかりました。2 つのプログラムをテストして、Java サーバーは Java クライアントと通信でき、C クライアントは C サーバーと通信できると結論付けました。
ただし、Java サーバーが C クライアントと通信することはできません。
Java コード:
serverSocket = new ServerSocket(port);
Socket sock = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String inputString = in.readLine();
System.out.println(inputString);
C コード:
struct sockaddr_in sin;
struct hostent *host;
host = gethostbyname(hostname);
bzero(&(sin.sin_zero),8);
sin.sin_port = htons(port);
sin.sin_addr = *((struct in_addr *)host->h_addr);
sin.sin_family = AF_INET;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(connect(sock, (struct sockaddr *)&sin,sizeof(struct sockaddr_in)) == -1)
...
send(sock, &message, strlen(message)+1, 0);
編集: 2 つのホスト間で「TEST」という単語を送信しようとしましたが、成功しませんでした。
修正済み: メッセージ変数を渡すときに、メッセージ変数の前にアンパサンドがありました。
になるはずだった:
send(sock, message, strlen(message)+1, 0);