нужна помощь по Socket Perl

Тема в разделе "Другие", создана пользователем harakiry, 30 апр 2007.

Статус темы:
Закрыта.
  1. harakiry

    harakiry Гость

    Написал скрипт который должен конектится к одному серверу по определённому порту, если не удаётся это сделать, то создаётся новый сокет и он пытается это сделать по другому порту к тому же серверу.

    Код (Text):
    #!perl.exe
    use strict;
    use Socket qw(:DEFAULT :crlf);
    use NET::Ping;
    use IO::Socket;

    my ($serv_for_get_serv, $port_for_get_serv, $serv_for_get_serv_2, $port_for_get_serv_2) = ('mrim.mail.ru', 2042, 'mrim.mail.ru', 443);
    my ($serv_for_connect, $port_for_connect);


    sub connect1{

    my $sock;
    if($sock = new IO::Socket::INET->new(  
    PeerAddr => $serv_for_get_serv,
    PeerPort => $port_for_get_serv,
    PeerProto => 'tcp',
    TimeOut  => 5,
    ))

    {
    my $result='';
    read($sock, $result, 18);
    if($result=~m/(.+):(.+)/){} else{print "Content-type:r text/plain\n\nERROR:1" and exit(1);}
    ($serv_for_connect, $port_for_connect) = ($1, $2);
    send_result();
    }
    else
    {
    my $sock2;
    if($sock2 = new IO::Socket::INET->new( 
    PeerAddr => $serv_for_get_serv_2,
    PeerPort => $port_for_get_serv_2,
    PeerProto => 'tcp',
    TimeOut  => 2,
    ))
    {
    my $result='';
    read($sock2, $result, 18);

    if($result=~m/(.+):(.+)/){} else{print "Content-type:r text/plain\n\nERROR:2" and exit(1);}
    ($serv_for_connect, $port_for_connect) = ($1, $2);
    send_result();
    }
    }
    }


    sub send_result
    {
    print "Content-type:r text/xml\n\n";
    print '<?xml version="l.0"?>';
    print '<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">';
    print '<cross-domain-policy>';
    print '<allow-access-from domain="' . $serv_for_connect . '" to-ports="' . $port_for_connect . '"/>';
    print '</cross-domain-policy>';
    exit(0);
    }


    connect1();
    Но получается то что попробовав приконектится по порту 2042, он не пытается приконектится к 443(смотрел сканером) и принтует ERROR2, как-будто приконектился и скачал данные, которые проверяются по шаблону и не подходят из-за чего и выводится ERROR 2, хотя по идее в случае неудачных коннектов не должно ничего выводится.

    Помогите чайнику
     
  2. harakiry

    harakiry Гость

    проблема решена
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей