我已经实现了一个 C 服务器和一个 Java 客户端,它们通过 TCP 相互通信。问题是当客户端发送一个字符串时,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++互操作性的一些问题。谢谢!