ソケットにテキストを正常に書き込むことができます (バイト長が返されるため、これはわかっています) が、socket_read を試行すると、空の文字列が返されます。MSG_WAITALL パラメータを指定して socket_recv を試したところ、0 バイトが返されました。どうしたの?奇妙なことに、私はこの種のメッセージを受け取ることができます:
$input = "HEAD / HTTP/1.1\r\n";
$input .= "Host: mydomain.com\r\n";
$input .= "Connection: Close\r\n\r\n";
これが私の完全なコードです:
<?php
echo "loading socket...";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, "fefansoftware.com", 80);
$input = "hello world";
echo socket_write($socket, $input, strlen($input));
$buffer = 'This is my buffer.';
if ($bytes = socket_recv($socket, $buffer, 2048, MSG_WAITALL)) {
echo $bytes . " bytes received";
echo $buffer;
}else {
echo "read failed";
}
socket_close($socket);
?>
hello world メッセージを受信できないのに、「HEAD / HTTP1.1...」メッセージを受信できるのはなぜですか?