我試圖在充當TCP服務器的Java應用程序和充當客戶端的PHP腳本之間的單個端口上建立簡單的TCP連接。簡單的Java TCP服務器和PHP客戶端問題
我會發佈下面每個代碼,但問題是: 我可以連接併發送數據到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);
}
responseString =命令+ + 「\ r \ n」, 「MC2它的作品!」 – clevertension 2012-03-15 06:22:03
我認爲你必須添加插槽知道你完成發送你的數據的線路的EOF – clevertension 2012-03-15 06:22:42
是的,這絕對是問題的一部分。提交問題後約20分鐘,我想到了這一切。生活也是如此。 – KayoticSully 2012-03-15 06:41:39