информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор 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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach