整数をサーバーに送信し、それをインクリメントして、新しい数値とランダムな文字列を Client に送り返したいです。私はこのコードを使用します
int value = htons( 4 );
int reply = 0;
send( to_server_socket, &value, sizeof( value ),0 );
recv( to_server_socket, &reply, sizeof( reply ), 0 );
printf( "got reply: %d\n", ntohs( reply ) );
サーバーコード
DataInputStream din = new DataInputStream(socket.getInputStream());
int ClientNumber= din.readInt();
System.out.println(ClientNumber);
ClientNumber++;
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeInt(ClientNumber);
String randomString= getRandomValue(10,20);
dos.writeUTF(randomString);
しかし、サーバーは4を受信しませんが、262144を受信し、クライアントの返信はまだ0です。サーバーにもエラーがあります
java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323) での java.io.EOFException java.io.DataInputStream.readUTF(DataInputStream.java:572) での java.io.DataInputStream.readUTF(DataInputStream.java:547) ServiceRequest.run(ServiceRequest.java:41) で java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) でjava.util.concurrent.FutureTask.run(FutureTask.java:138) で java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. java:918) で java.lang.Thread.run(Thread.java:680)
編集:
htonl で動作します C クライアントから Java サーバーに整数を送信します