информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят медАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
частично решил. Вопрос о блокировке 03.07.02 22:56  Число просмотров: 898
Автор: 123mitya Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Решил проблему бесконенчого ожидания recv, используя IO::Select ,
но сокет получился блокирующий.

Вопрос о блокировки по прежнему в силе.
<programming>
[Win32] IO::Socket 02.07.02 22:55  
Автор: 123mitya Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как создать неблокирующийся сокет под win32, используя IO::Socket ?

Вещи типа

$flags = fcntl($socket, F_GETFL,0)
or die "fisrt : $!";
fcntl($socket, F_SETFL,$flags | O_NONBLOCK)
or die "second: $!";

под win32 не прокатят, говорит, что не определена F_SETFL и F_GETFL

Прочитал в perldoc, что есть метод setsockopt , однако, он не работает (или работает, но не так, как надо).

Использую, как
$socket1->setsockopt(SOL_SOCKET,O_NONBLOCK,1);

- наверное зедсь глюк.

Основная задача : требуется, чтобы recv не ожидала до тех пор, пока придет сообщение, а пыталась получить сообщение, и в случае, если сокет пустой (в очереде нет ничего), то цикл продолжался бы.


Желательно организовать это с помощью IO::Socket

------------
$socket1 = IO::Socket::INET->new(LocalPort=>$PORTNO,Proto=>'udp') or die "error: $@";

$socket1->setsockopt(SOL_SOCKET,O_NONBLOCK,1);

while (1){
if ($socket1->recv($msg,$MAXLEN,O_NONBLOCK)){
print $msg;
}
}

- здесь $sicket1->recv бесконечно ожидает сообщение (до тех пор, пока не появится новое сообщение), как бы сделать так, чтобы бесконечного ожидания не происходило, используя IO::Socket?
Может быть с timeoot'ами что сотворить?
частично решил. Вопрос о блокировке 03.07.02 22:56  
Автор: 123mitya Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Решил проблему бесконенчого ожидания recv, используя IO::Select ,
но сокет получился блокирующий.

Вопрос о блокировки по прежнему в силе.
1




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


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