Есть такой скрипт: Code: #!/usr/local/bin/perl -w print "Content-Type: text/html\n\n"; print "Соединяемся при помощи модуля Socket<br>"; use Socket; #Используем модуль Socket $port = 10000; $host = "4.88.167.248"; socket( SOCKET, PF_INET, SOCK_STREAM, (getprotobyname('tcp'))); # Создаём сокет my $socket_addr = sockaddr_in( $port, inet_aton($host) ); # адрес сокета if (connect( SOCKET, $socket_addr)) {$result = 'Удачное соединение'} else {$result = 'Не удалось соединиться'} print "$result"; close SOCKET; Проблема в том, что connect всегда возвращает истину, независимо от того получилось соединиться или не получилось. Кто-нибудь сталкивался с такой проблемой?
У Вас, видимо, перл неправильный У меня все ок: Code: #!/usr/bin/perl use warnings; use strict; use Socket; my($host,$port) = ('127.0.0.1',8697); socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); my $iaddr = inet_aton($host); my $paddr = sockaddr_in($port, $iaddr); connect(SOCK, $paddr) or die 'Cannot connect'; Code: goofy:~ $ perl ./sock.pl Cannot connect at ./sock.pl line 10.
Я впринцепе так и думал, пробовал разные версии Perl (5.10.1 и 5.8.9) на обоих такая проблема. Может быть даже дело в моей системе. Можете скинуть ссылку, от куда вы брали perl?
FunkyBoy, попробуйте заюзать IO::Socket::INET, например, так: Code: #!/usr/bin/perl use warnings; use strict; use IO::Socket::INET; my ($host, $port) = ('127.0.0.1', 8697); my $sock = IO::Socket::INET->new ( 'PeerAddr' => $host, 'PeerPort' => $port, 'Proto' => 'tcp', 'Timeout' => 20 ) or die "Connection error: $@\n"; print "Connected\n"; Что выведет скрипт?