TCP を介して相互に通信する C サーバーと Java クライアントを実装しました。問題は、クライアントが文字列を送信するときに、C サーバーの recv() 呼び出しが文字を読み取ってすぐに戻ることです。recv() にブレークポイントを設定してからステップオーバーを実行すると、サーバーは送信された文字列全体を受信します。Cで使用しているrecv呼び出しは次のとおりです
char tempBuffer[256] = {'\0'};
int retVal = recv(hClientSocket, tempBuffer, sizeof(tempBuffer), 0);
これが Java クライアントです。
clientSocket = new Socket("127.0.0.1", 24886);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes("alert(\"hi\")");
私の質問は、各文字を個別に受信するために C サーバー コードに while ループを配置することなく、これを機能させる方法はありますか? これを行う最善の方法は何ですか?ここに記載されている C++ クライアントを実装しましたが、正常に動作します。したがって、Java+C++ の相互運用性に何らかの問題があると推測しています。ありがとう!