0

cpanのモジュールHTTP::AppServerを使用するhttpサーバーがあります。

127.0.0.1またはを使用してサーバーに接続できますが、。localhostで惨めに失敗し::1ます。

curlの例を次に示します。

$ curl http://127.0.0.1:8080/index.html
This is a test.
$ curl -g http://[::1]:8080/index.html
curl: (7) couldn't connect to host

サーバーの起動方法は次のとおりです。

use HTTP::AppServer;
use IO::Socket::IP -register;

  my $server = HTTP::AppServer->new( StartBackground => 0, ServerPort => 8080 );

  $server->plugin('FileRetriever', DocRoot => '/tmp');

  $server->start; 

実際、それはもっと複雑です。しかし、スクリプトの残りすべてが必要だとは思いません。モジュールIO::Socket :: IPを追加し、モジュールSocketをここにあるバージョンにアップグレードしてIO :: Socket::IPを機能させました。

それでも、動作しません。

4

3 に答える 3

0

それが機能しない場合は、IO::Socket::IPまたはのどこかにバグがある可能性がありますHTTP::AppServer。のRTバグとして送っていただけませんIO::Socket::IPか。調べてみます。

https://rt.cpan.org/Dist/Display.html?Queue=IO-Socket-IP

于 2012-07-12T12:01:45.923 に答える
0

5.14より新しいバージョンのPerlを使用してみてください。

http://www.perl.org/about/whitepapers/perl-ipv6.html

于 2012-07-11T20:43:20.503 に答える
0

LeoNerdがIO::Socket :: IPはこの状況では役に立たないと言った後、私は別の解決策を見つけましたが、この解決策は一部のperlバージョンでのみ機能します。

HTTP::AppServerはHTTP::Server :: Simpleに基づいており、cpanで、ipv6をサポートするこの2番目のモジュールの新しいバージョンを見つけました。

まず最初に、新しいバージョンのHTTP :: Server :: Simpleをここからダウンロードする必要があります:

http://metacpan.org/pod/HTTP::Server::Simple

ご覧のとおりnew、新しい引数を受け入れる別のメソッドがありますfamily

initここで、HTTP :: AppServer.pmを取得し、から関数を変更する必要があります。

sub init
{
    my ($self, %opts) = @_;

    # server options defaults
    my %defaults = (StartBackground => 0, ServerPort => 3000);

    # set options or use defaults
    map { $self->{$_} = (exists $opts{$_} ? $opts{$_} : $defaults{$_}) }
        keys %defaults;

    $self->{'server'} = HTTP::AppServer::Base->new($self->{'ServerPort'});

    return $self;
}

sub init
{
    my ($self, %opts) = @_;

    # server options defaults
    my %defaults = (StartBackground => 0, ServerPort => 3000);

    # set options or use defaults
    map { $self->{$_} = (exists $opts{$_} ? $opts{$_} : $defaults{$_}) }
        keys %defaults;

    $self->{'server'} = HTTP::AppServer::Base->new($self->{'ServerPort'}, Socket::AF_INET6);

    return $self;
}

残念ながら、これは質問に答えますが、perl 5.8.8では動作せず、Socket.pmを最新バージョンにアップグレードするため、私の問題ではありません。

于 2012-07-18T17:53:49.587 に答える