Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[Perl] Модуль Socket. Не правильно работает ф-я connect |

23.11.2009, 23:09
|
|
Новичок
Регистрация: 18.04.2007
Сообщений: 4
Провел на форуме: 4633
Репутация:
0
|
|
[Perl] Модуль Socket. Не правильно работает ф-я connect
Есть такой скрипт:
Код:
#!/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 всегда возвращает истину, независимо от того получилось соединиться или не получилось.
Кто-нибудь сталкивался с такой проблемой?
|
|
|

24.11.2009, 15:59
|
|
Постоянный
Регистрация: 03.08.2007
Сообщений: 367
Провел на форуме: 876216
Репутация:
209
|
|
У Вас, видимо, перл неправильный 
У меня все ок:
Код:
#!/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';
Код:
goofy:~ $ perl ./sock.pl
Cannot connect at ./sock.pl line 10.
|
|
|

24.11.2009, 17:29
|
|
Новичок
Регистрация: 18.04.2007
Сообщений: 4
Провел на форуме: 4633
Репутация:
0
|
|
Сообщение от biophreak
У Вас, видимо, перл неправильный 
Я впринцепе так и думал, пробовал разные версии Perl (5.10.1 и 5.8.9) на обоих такая проблема.
Может быть даже дело в моей системе.
Можете скинуть ссылку, от куда вы брали perl?
|
|
|

25.11.2009, 10:17
|
|
Постоянный
Регистрация: 03.08.2007
Сообщений: 367
Провел на форуме: 876216
Репутация:
209
|
|
Э, ну я его ставил еще когда систему устанавливал, так что с репозитария дебиана.
|
|
|

25.11.2009, 10:18
|
|
Постоянный
Регистрация: 03.08.2007
Сообщений: 367
Провел на форуме: 876216
Репутация:
209
|
|
Кстати, а мой пример у Вас работает? 
|
|
|

25.11.2009, 13:38
|
|
Новичок
Регистрация: 18.04.2007
Сообщений: 4
Провел на форуме: 4633
Репутация:
0
|
|
тоже выпоняется без ошибки
|
|
|

25.11.2009, 16:54
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
FunkyBoy, попробуйте заюзать IO::Socket::INET, например, так:
Код:
#!/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";
Что выведет скрипт?
|
|
|

25.11.2009, 23:57
|
|
Новичок
Регистрация: 18.04.2007
Сообщений: 4
Провел на форуме: 4633
Репутация:
0
|
|
Сообщение от krypt3r
Что выведет скрипт?
Скрипт выдаёт: Connected
Модуль IO::Socket::INET сам использует Socket, по этому такой результат.
|
|
|

26.11.2009, 07:50
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Странный у вас какой-то перл
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
md5
|
Badak |
Расшифровка хешей |
12 |
08.08.2009 21:41 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|