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