Сокеты. Таймаут на Получение данных
От: Аноним  
Дата: 25.06.10 05:50
Оценка:
Привет!
Как сделать таймаут только на метод BeginReceive?

т.е. сначала я делаю Send, а вот Receive надо ждать не более 5 сек. Как такое лучше сделать?
Re: Сокеты. Таймаут на Получение данных
От: Jolly Roger  
Дата: 26.06.10 05:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!

А>Как сделать таймаут только на метод BeginReceive?

А>т.е. сначала я делаю Send, а вот Receive надо ждать не более 5 сек. Как такое лучше сделать?


SetSocketOption + SocketOptionName.ReceiveTimeout ? А вообще можно просто запустить таймер на 5 секунд, по приходу данных закрыть таймер, а по срабатыванию таймера — закрыть сокет.
"Нормальные герои всегда идут в обход!"
Re[2]: Сокеты. Таймаут на Получение данных
От: _FRED_ Черногория
Дата: 26.06.10 07:12
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

А>>Как сделать таймаут только на метод BeginReceive?


А>>т.е. сначала я делаю Send, а вот Receive надо ждать не более 5 сек. Как такое лучше сделать?


JR>…А вообще можно просто запустить таймер на 5 секунд, по приходу данных закрыть таймер, а по срабатыванию таймера — закрыть сокет.


А разве BeginReceive не асинхронный? Зачем тогда таймер? Вызвали и AsyncWaitHandle.WaitOne(5 секунд) по результату определяем что произошло: таймаут или завершение.
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Сокеты. Таймаут на Получение данных
От: Jolly Roger  
Дата: 27.06.10 08:59
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А разве BeginReceive не асинхронный? Зачем тогда таймер? Вызвали и AsyncWaitHandle.WaitOne(5 секунд) по результату определяем что произошло: таймаут или завершение.


Ну я просто подумал, что этот сценарий слишком очевидный, чтобы ТС не догадался сам, и что подразумевается всё-таки полностью асинхронная работа с callback.
"Нормальные герои всегда идут в обход!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.