Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> non-fork TCP server, помогите пожалуйста. 
:(
    Опции темы
loginn
Дата 8.9.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



Суть проблемы:
1. Открываю новую сессию. 
2. Вбиваю:  nc 127.0.0.10 55555

Все ок, сервер выводит:
10
New connection...
Waiting new data in descriptors...



Но если продолжаю в netcat писать что-то и отправлять серверу, то сервер этого не выводит, хотя по логике скрипта должен выводить, т.к. стоит проверка того, есть ли данные в дескрипторе SOCKET.


Вот код tcp сервера (сервер на основе мультиплексирования ввода-вывода):
Код

#!/usr/bin/perl
use Socket;

$rin =  '';
$|=1;

$LSOCK = &start_tcp_server ('tcp', '127.0.0.10', '55555');
select((select($LSOCK), $|=1)[0]);
vec ($rin, fileno($LSOCK), 1) = 1;

while (select ($rout=$rin, undef,undef,undef)) {
  if (vec ($rout, fileno($LSOCK), 1)) {
      accept (SOCKET, $LSOCK);
      select((select(SOCKET), $|=1)[0]);
      vec ($fh, fileno(SOCKET), 1) = 1;
      print vec ($rout, fileno($LSOCK), 1), vec ($rout, fileno(SOCKET), 1), "\n", "New connection...\n";
  }
  if (vec ($rout, fileno(SOCKET), 1)) {
      recv (SOCKET, $msg, 1024, 0);
      print  "recv:$msg\n";
  }
  print "Waiting new data in descriptors...\n";
}    


sub start_tcp_server {   
  my ($socket, $protocol, $ip_addr, $port, $binary_ip, $sockaddr_in);
    
  ($protocol, $ip_addr, $port) = @_;
      
  if ($protocol =~ /^tcp$/i) {print "Error! Code: $!" unless (socket($socket, 2, 1, 6));}    
  
  $binary_ip = inet_aton($ip_addr);
  $sockaddr_in = pack_sockaddr_in ($port, $binary_ip);
  
  bind ($socket, $sockaddr_in);
  listen ($socket, 128);
  return $socket if $socket;
}

PM MAIL   Вверх
loginn
Дата 8.9.2011, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



все нашел ошибку. smile
вопрос снят.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.