Автор Тема: Сервер-Клиент на Perl(IO::Socket) - неполучается  (Прочитано 5609 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сабж.
необходимо для проэкта написать своего демона, который бы слушал порт, принимал сообщения, работая по определенному алгоритму,но получаю маленький затык, на этапе простой отправки приема данных:

#!/usr/bin/perl -w
use IO::Socket;
#use strict;
use POSIX;
require \
'sys/syscall.ph\';
my $sock = IO::Socket::INET->new(LocalAddr => \'127.0.0.1\',
                                LocalPort => \'2727\',
                                Listen => 15,
                                Type => SOCK_STREAM,
                                Proto    => \'tcp\');


fork() && exit;

close STDOUT; close STDERR; close STDIN;
chdir \'/tmp\';
syscall(&SYS_setsid);
$SIG{\'INT\'} = $SIG{\'QUIT\'} = $SIG{\'TERM\'} = \'quit\';
$SIG{\'HUP\'} = \'ignore\';

$SIG{CHLD} =\\&REAPER;

while (1){
        while(my $client = $sock->accept()){
                                print $sock "My Net Daemon! Hello!\\n";
                                my $ddd = <$sock>;
                                print $sock $ddd;
                                #`echo $ddd>>/tmp/sk.s `;



        }
}
#sleep 20;
#exit(0);
close($sock);


########### SUBs

sub REAPER {
1 until (-1 == waitpid(-1,WNOHANG));
$SIG{CHLD} =\\&REAPER;
}



Скрипт в демона превращается без проблем. На данном этапе fork для каждого нового подключения мне не нужен, потому его убрал. Суть не в этом.
Согласно кода, у меня в случае подключения к порту 2727 должно в окно терминала выкинуть "My Net Daemon! Hello!\\n". проверяю обычным telnet-ом:

[root@fbsd2.home] /usr/local/script/Dpm/tmp :./s_s_server.pl
[root@fbsd2.home] /usr/local/script/Dpm/tmp :telnet localhost 2727
Trying 127.0.0.1
...
Connected to localhost.
Escape character is \'^]\'.
Killed
[root@fbsd2.home] /usr/local/script/Dpm/tmp :


Может кто подсказать, как правильно слать данные и принимать? У меня через дискрипторы не получается, send/recv тоже не идут, правда я мог с флагами напутать. Пока роюсь в этом направлении
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
The documentations is your friend

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сервер-Клиент на Perl(IO::Socket) - неполучается
« Ответ #2 : 12 Февраля 2007, 15:33:41 »
Спасибо за ссылку, сейчас пробую :)
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сервер-Клиент на Perl(IO::Socket) - неполучается
« Ответ #3 : 12 Февраля 2007, 22:21:02 »
То, что доктор прописал. Огромное спасибо!
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сервер-Клиент на Perl(IO::Socket) - неполучается
« Ответ #4 : 17 Февраля 2007, 20:24:01 »
А поделиться как бинарник послать, можете? Суть в чем. перевести дискриптор в binmode то я могу, а вот дальше как быть? как вернуть в текстовый формат, или на двоичку/хексы переходить? Иначе никак?
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сервер-Клиент на Perl(IO::Socket) - неполучается
« Ответ #5 : 17 Февраля 2007, 20:32:11 »
Да, про UUE и Base64 знаю. Вот только у меня раз в 15 минут формируется файл размером в пол метра. после упаковки он сжимается до 40 кил, если обработать UUE или B64 то размер файла растет до 80 и 59 кил соответственно. В общем надоть снизить паразитный траффик :)
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сервер-Клиент на Perl(IO::Socket) - неполучается
« Ответ #6 : 18 Февраля 2007, 09:48:04 »
Вопрос снят - туплю. Проспался и все стало на свои места
Всё будет хорошо - я договорился!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28