简单的Java TCP服务器和PHP客户端问题

我试图在将充当TCP服务器的Java应用程序和充当客户端的PHP脚本之间的单个端口上建立简单的TCP连接。

我将在下面发布每个代码,但问题是:我可以连接并将数据发送到Java服务器就好了。 我可以获取该数据并将其打印出来。 我的问题出现在尝试将响应发送回php服务器。

当我注释掉php的最后一行“echo socket_read($ socket,14,PHP_NORMAL_READ);” 数据很好地到达Java服务器。 当我重新添加该行时,数据甚至不会到达Java服务器。

因此,我假设我的问题与我如何从Java发送数据或尝试从服务器获取PHP数据有关。

这让我真的很难过,任何帮助都将不胜感激!

Java服务器:

protected ServerSocket socket; protected final int port = 9005; protected Socket connection; protected String command = new String(); protected String responseString = new String(); socket = new ServerSocket(port); while(true) { // open socket connection = socket.accept(); // get input reader InputStreamReader inputStream = new InputStreamReader(connection.getInputStream()); BufferedReader input = new BufferedReader(inputStream); // get output handler DataOutputStream response = new DataOutputStream(connection.getOutputStream()); // get input command = input.readLine(); // process input Logger.log("Command: " + command); responseString = command + " MC2 It Works!"; // send response response.writeBytes(responseString); response.flush(); response.close(); } 

PHP客户端:

 $address = 'example.com'; // obviously not the address I am using $port = 9005; $message = "Test"; $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')); socket_connect($socket, $address, $port) if(socket_send($socket, $message, strlen($message), MSG_EOF) != FALSE) { echo socket_read($socket, 14, PHP_NORMAL_READ); } 

解决:这是我找出问题所在的解决方案。 当从Java服务器读取数据时,我只读了一个块,其余的都挂了。 需要在循环中读取数据以获取所有数据。

我发送到Java Server的数据也没有以新行或回车结束。

以下重写的PHP客户端现在使整个过程很好地工作

 $address = 'minecraft.kayoticgamer.com'; $port = 9005; $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')); socket_connect($socket, $address, $port); $message .= chr(10); $status = socket_sendto($socket, $message, strlen($message), MSG_EOF, $address, $port); if($status !== FALSE) { $message = ''; $next = ''; while ($next = socket_read($socket, 4096)) { $message .= $next; } echo $message; } else { echo "Failed"; } socket_close($socket);