LINUX.ORG.RU

Perl: проблема совместимости «use Socket;»


0

0

Имеется виндовый ActiveState ActivePerl 5.8
На нем запускается следующий клиент: 

-----------------------------------------
#!/usr/bin/perl

use Socket;

$file="cur_playing.xml";
$recordhost="192.168.0.77";
$port="5000";

open(xml_file, "<$file") or die "Couldn't open $file for reading: $!\n";
@data_xml=<xml_file>;
close xml_file;

# create a socket
socket(TO_SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

# build the address of the remote machine
$internet_addr = inet_aton($recordhost)
    or die "Couldn't convert $recordhost into an Internet address: $!\n";
$paddr = sockaddr_in($port, $internet_addr);

# connect
connect(TO_SERVER, $paddr)
    or die "Couldn't connect to $recordhost:$port : $!\n";

# ... do something with the socket
foreach $line (@data_xml) {
    send(TO_SERVER, $line, 0);
    }

# and terminate the connection when we're done
close(TO_SERVER);
-----------------------------------------

Так же имеется линуксовый perl 5.6.1
На нем - сервер:

-----------------------------------------
#!/usr/bin/perl

use IO::Socket;
use Net::hostent;

$port = "5000";
$i=0;

$server = IO::Socket::INET->new(LocalPort => $port,
                            Type => SOCK_STREAM,
                            Proto => 'tcp',
                            Reuse => 1,
                            Listen => 4)

                or die "Couldn't create xml-server: $_\n";
print "[Server $0 accepting clients]\n";

while ($client = $server->accept()) {
    $client->autoflush(1);
    print $client "Welcome to $0.\n";
    $hostinfo = gethostbyaddr ($client->peeraddr);
    printf "[Connect from %s]\n", $hostinfo->name || $client->peerhost;
    print $client "Command? ";
    print $_;
    while (<$client>) {
        print $_;
    }
    close $client;
}
-----------------------------------------

Итак - сервер на линуксе, клиент на винде.
Имеем проблему - когда запускаем клиент на винде - сервер выплевывает предсмертный [Connect from XXXXXX] и отваливается. 

Если этот самый клиент запускать на линуксовой машине - все работает как надо. Но мне нужно его запускать именно на виндовой, что делать ?
Куда копать ? Хэлп %-(
anonymous

проблему решил другим способом (просто в клиенте заюзал use IO::Socket;)
это помогло.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.