3

ソケットにテキストを正常に書き込むことができます (バイト長が返されるため、これはわかっています) が、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...」メッセージを受信できるのはなぜですか?

4

0 に答える 0