информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
 Серьезный сбой AWS положил множество... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Perl] Не работает сокет асинхронно 11.06.06 16:45  
Автор: Evanid Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Перл 5.8
Открываю сокет, после чего создаю два потока в одном из которых читаю из него, а во втором пишу в него.


use Socket qw(:DEFAULT :crlf);
use threads;
use IO::Handle;


socket(CLIENT, AF_INET, SOCK_STREAM, $protocol) or die "socket() fail: $!\n";
connect(CLIENT,$dest_addr) or die "connect() fail: $!\n";
binmode CLIENT;
CLIENT->autoflush(1);


my $thread1 = threads->new(\&listen);
$thread1->detach();
my $thread2 = threads->new(\&ping);
$thread2->detach();

while(1){}
sub ping{
while(!$errorconnection){ sleep 10; print CLIENT "test";}
}
sub listen
{
$incomnigbytes=<CLIENT>;
while ($incomnigbytes){
#что-то делается
$incomnigbytes=<CLIENT>;
}
}

Проблема заключается в том что пока нечего считывать в сокет писать не хочет. Выполнение потока с пингом останавливается на отправке "test" до тех пор, пока не будет что-нибуть считано в другом потоке.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach