안녕하세요 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에서 ##를 확인하여 루프를 종료하십시오. HTTP 클라이언트를 쓰려고하지 않고 말풍선을 알고 있습니다. 난 그냥 PHP는 내가 작성한 C + +의 Winsock 응용 프로그램과 통신 싶습니다. 도움 주셔서 감사합니다. – William