Perl сокет соединение - PullRequest
2 голосов
/ 28 июня 2011

Возможно ли создать сокет-соединение с открытым портом на конечном устройстве.

Если соединение обрывается, напечатать что-нибудь?

Я видел несколько примеров, но для них требуется скрипт типа сервера и клиент, просто ищущий клиента.1007 *

Ответы [ 3 ]

6 голосов
/ 28 июня 2011

Perl имеет встроенные сокеты.Вам просто нужно загрузить стандартный модуль Socket.pm, чтобы получить нужные вам константы.

Страница руководства perlipc расскажет вам все об этом.Однако существует много модулей более высокого уровня, которые справляются с этим легче, чем встроенные.Некоторые даже стандартные.

Вот пример CLI:

% perl -MIO::Socket::INET -E '$him = new IO::Socket::INET "localhost:daytime" // die; print while <$him>'
Tue Jun 28 08:17:13 2011
0 голосов
/ 28 июня 2011

Вариант этого может соответствовать вашим потребностям:

use strict;
use warnings;
use constant 
    { SOCKET_ERROR_MESSAGE => 'Some socket error message right here!'
    , YOU_WANT_TO          => 1
    };

use IO::Select;
use IO::Socket::INET;

@ARGV = qw<server.domain.tld 8080> unless @ARGV;

sub handle_server_message {
    ...
}

my $sel 
    = IO::Select->new(
      IO::Socket::INET->new( 
      PeerAddr => shift
    , PeerPort => shift
    ));

# block until the server sends something that can be read.
while ( my ( $sock ) = $sel->can_read ) { 
    # you could just do this with $sock->eof...
    if ( $sock->error and $sock->eof ) {
        die MY_ERROR_MESSAGE if YOU_WANT_TO;
        print MY_ERROR_MESSAGE;
    }
    else { 
        handle_server_message( $sock );
    }
}
0 голосов
/ 28 июня 2011

Рассмотрите возможность использования модуля IO :: Socket :: INET , http://www.thegeekstuff.com/2010/07/perl-tcp-udp-socket-programming/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...