使用套接字发送url请求?

 robinqianqcs521 发布于 2023-02-08 10:56

我想使用套接字打开一个链接并阅读html代码,到目前为止我使用的是:

my $req = <send($req);


print "skipping headers\n";
while(<$socket>) { s/^(.*?)\r?\n$/\1/; last if /^\s*\r?\n?$/; }

print "Reading Chunks\n";
my $buffer = "";
while(<$socket>)
{
    last if /^HTTP/;
    next if /^.{0,5}$/;
    s/^\s*(.*?)\s*\r?\n$/\1/;
    $buffer .= $_;
}
print $buffer;

我有两个问题......

1)while(<$socket>)需要时间,当我把打印放在while循环中时,我可以看到只需添加最后一个标签需要一段时间,当打印所有其他源时,它只挂了一分钟到添加最后一个标签.

2)我没有得到页面的真实源代码,我的意思是我们使用的那个view-source:www.example.com,我错过了什么?

编辑:

我称这个子连接在开始时创建套接字

sub _connect
{
      my ($peerAdd) = @_;
     return IO::Socket::INET->new(
         PeerAddr => $peerAdd,
         PeerPort => 'http(80)',
         Proto    => 'tcp'
     )
         or die "Could not connect to $peerAdd:80!! $!"
}

提前致谢.

1 个回答
  • 您发送默认保持活动的HTTP/1.1请求,例如服务器保持连接打开并等待更多请求.因此,最后一次调用只会在服务器因为不活动而关闭连接时结束,在收到请求的最后几个字节之后很久.

    如果你很懒,你应该只使用LWP :: UserAgent或类似的模块.如果你想要手工完成所有事情,你就可以自己处理所有混乱的东西,例如分块编码,压缩传输,许多非标准服务器等.这远非微不足道.

    2023-02-08 10:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有