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