The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Проблеммы при работе с сокетами"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Проблеммы при работе с сокетами"
Сообщение от Wizard emailИскать по авторуВ закладки(??) on 03-Авг-04, 23:00  (MSK)
Здравствуйте.
есть такой кусок кода:

#!/usr/bin/perl
#use strict;
use IO::Socket;
use Digest::MD5 qw(md5_hex);
use Config::IniFiles;
$|=1;

conn();

sub conn
{
my $host = '127.0.0.1';
my $port = '12345';
print "Connecting to: $host:$port\n";
my $r = IO::Socket::INET->new ( Proto => "tcp",
                                     PeerAddr => $host,
                                     PeerPort => $port ) || die "can`t сonnect";

out('test');       # тут ругается, мол Can't use an undefined value as a symbol reference at ./client.pl line 35.
my $test = get();  # и тут
}

sub out
{
print $r $_[0]."\n";       # !!!! line 35
print '>>SEND: '.$_[0]."\n";
}

sub get
{
my $line = <$r>;
chomp($line);
$line =~ s/\r//;
$line =~ s/\n//;
print '<<RECV: '.$line."\n";
return $line;
}

на склолько я понимаю в sub`е не вдино переменной (видемо ссылки на дескриптор).
создовать socket в sub`е обязательно, так как это мозже будет модуклем.
пробовал передовать $r в процедуры как аргумент - не помогло.
как решить/обойти эту проблемму?

Сбасибо всем, кто откликнется

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Проблеммы при работе с сокетами"
Сообщение от ihor Искать по авторуВ закладки on 04-Авг-04, 10:36  (MSK)
есть 2 основных метода:

1) сделать $r глобальной переменной:
############
#!/usr/bin/perl
#use strict;
use IO::Socket;
use Digest::MD5 qw(md5_hex);
use Config::IniFiles;
$|=1;
my $r;

conn();

sub conn {
  my $host = '127.0.0.1';
  my $port = '12345';
  print "Connecting to: $host:$port\n";
  $r = IO::Socket::INET->new ( Proto => "tcp",
....
###########
2) передавать $r в качестве аргумента в функции, где  она необходима:
#########
sub out {
  my($conn, $text) = @_;
  print $conn $text."\n";
....
###########

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Проблеммы при работе с сокетами"
Сообщение от Wizard emailИскать по авторуВ закладки(??) on 05-Авг-04, 02:58  (MSK)
первый метод помог, спасибо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру