Автор Тема: Чтение данных из сокета - трабл  (Прочитано 3416 раз)

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

Оффлайн stratocaster

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение данных из сокета - трабл
« : 26 Августа 2005, 12:22:56 »
Приветствую.
Очень непонятная проблема.
Буду благодарен если натолкнете на мысль.


  my %params = (
               lang => ru,
               host => \'localhost\',
               port => PORT,
               @_);
  my $len = length($word);
  my $sock = IO::Socket::INET->new(
                                   PeerAddr => $params{\'host\'},
                                   PeerPort =>  $params{\'port\'},
                                   Proto    => \'tcp\');
  unless ($sock) {
       err2log( $errh . "Can not connect !");
     return $word;
  }

  print $sock \'CLIL\' .    $param{\'lang\'} . pack(\'i\', $len) .  $word;

  my @result;
  my $answer;
  while (read($sock, $answer, SIZE_OF_SIZE_T), $len=unpack(\'i\',$answer)) {
    read($sock,$word,$len);
    push @result,$word;
  }

  return @result ? $result[0] : $word;


Если кратко, то это предоставление программе spelld (mnogosearch), работающей в виде демона, слова для его морфологического анализа и поиска  родственных словоформ.

На обоих машинах стоит Linux  (RH Enterprise 3).  
На той на которой Intel 32bit - код отрабатывает нормально.
Там где AMD64 -  все отвисает на чтении из сокета (выявил после тщательной отладки):

read($sock, $answer, SIZE_OF_SIZE_T)

этот  вызов ничего не возвращает (причем даже undef), и ничего не кладет в $answer
то есть на ней просто виснет скрипт, и висит  пока процесс апач не вывалится в тайм-аут
В чем может быть причина?
Куда рыть?
В  логах этого spelld ничего нет, и вообще непонятно как дальше проводить дебаг. Скомпилился он на AMD64 нормально, без проблем.
« Последнее редактирование: 26 Августа 2005, 12:50:59 от stratocaster »

Оффлайн stratocaster

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение данных из сокета - трабл
« Ответ #1 : 26 Августа 2005, 16:21:38 »
может есть какой-нибудь перловый дебаггер?

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Чтение данных из сокета - трабл
« Ответ #2 : 26 Августа 2005, 19:55:59 »
perldoc perldebug

Оффлайн stratocaster

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение данных из сокета - трабл
« Ответ #3 : 29 Августа 2005, 03:51:13 »
блин, не работают как заявлено команды в этом дебаггере!! :( переходит на след.строку, как в редакторе

ВИНОВАТ. Похоже Putty глючит, в Xterm все пашет
« Последнее редактирование: 29 Августа 2005, 10:57:08 от stratocaster »

Оффлайн stratocaster

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение данных из сокета - трабл
« Ответ #4 : 29 Августа 2005, 11:09:21 »
фигня, дебаггер ничего не говорит. Значит демон тупорылит. Эх...
« Последнее редактирование: 29 Августа 2005, 12:38:54 от stratocaster »

 

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