0
嗨下面的socket_read函數存在問題,它在讀完數據後不會返回空字符串''。在第二次調用socket_read()時,它只是掛在那裏,頁面繼續在瀏覽器中加載而不返回。 它可以在服務器關閉連接的情況下工作,服務器是否必須關閉客戶端套接字?由於PHP socket_read不返回空字符串''
$json = $_GET['json'];
/* Get the port for the WWW service. */
// $service_port = getservbyname('www', 'tcp');
$service_port = "1111";
/* Get the IP address for the target host. */
$address = "192.168.3.5";
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
die();
} else {
//echo "OK.\n";
}
//echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
die();
} else {
//echo "OK.\n";
}
$out = '';
//echo "Sending HTTP HEAD request...";
$result = socket_write($socket, $json, strlen($json));
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
die();
} else {
//echo "OK.\n";
}
echo socket_read($socket, 2048);
echo socket_read($socket, 2048);
//
// while (socket_read($socket, 2048) !== '') {
// echo $out;
//
// }
//
socket_close($socket);
嗨,我確實從服務器發送了'\ 0',但它仍然不返回空字符串。或者,我只需從服務器發送##,然後在php中檢查##以結束循環。 我知道curl,而不是試圖寫一個HTTP客戶端。我只想讓php與我寫的C++ winsock應用程序通信。 感謝您的幫助。 – William 2013-03-14 03:56:22