我无法在 Perl 中使用 Socket 赢得横幅

I can't win the banner with Socket in Perl

我正在尝试连接到服务器并获得横幅,但我没有成功。

我的脚本运行理论上如下:

  1. 获取端口和 IP,但我可以在变量上使用静态 IP 端口。

  2. 执行套接字,超时7

  3. 如果连接

  4. 等待响应 e 使用句柄 <> 获取横幅

  5. 执行打印以显示横幅。

use IO::Socket::INET

$myip = <stdin>;     # $myip is the remote IP to connect
chomp($myip);
$myport = <stdin>;   # $myport is the remote port to connect 
chomp($myport);

# This part of data entry tends to use IP and URL frames, but it doesn't work either.
$sock=IO::Socket::INET‐>new("$myip:$myport");

if($sock){
    $remote=IO::Socket::INET‐>new(
        Proto=>"tcp",
        PeerAddr=>$myip,
        PeerPort=>$myport,
        Timeout=>"7"
    );
    $line=<$remote>;
    print $line;
}

当我运行代码时,连接被执行,但我没有获得横幅。 我找不到此代码中的错误。 我在其他网站上寻找解决方案,但找不到。 总是相同的例子,它们不会改变。

http 协议在发送任何回复之前需要来自客户端的请求。

使用您的 HTTP 服务器的 IP 地址尝试以下代码片段。

#!/usr/bin/env perl
#
# vim: ai ts=4 sw=4

use strict;
use warnings;

use IO::Socket::INET;

my $ip   = '192.186.1.120';
my $port = '80';

my $sock = IO::Socket::INET->new("$ip:$port");

print $sock "GET / HTTP/1.0\n\n";

print while <$sock>;

参考: HTTP flow