![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Работаю с POP3. Если получен весь ответ сервера (т.е. строка [server_answer\r\n]), то recv виснет, а потом отваливается по таймауту (:recv возвращяет 0). Можно как-то отловить конец ответки - "\r\n"?
Что здесь можно сделать? Желательно без BOOST.
Такая же проблема http://www.cyberforum.ru/visual-cpp/thread11542.html |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 5 Всего: 154 |
оно не виснет, оно ждет, передающая сторона скорее всего передает меньше 20 байт
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Я согласен, так оно и есть. Мне надо, чтоб ::recv сразу вернула управление программы, а не ждало. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
||||
|
||||
Alca |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Типа так?
Добавлено @ 09:49 Какой порядок вызовов:
Это сообщение отредактировал(а) Alca - 24.6.2009, 09:53 |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Alca
Установить можно 1 раз, после accept -а, он таким и останется. |
|||
|
||||
Alca |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
accept -а у меня нет. Добавлено через 3 минуты и 20 секунд ::ioctlsocket после этого? после того как создал сокет?
|
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Alca
не важно где, можно устанавливать 1 раз, после этого сокет станет неблокирующим. |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 3 Всего: 58 |
Вертает количество доступных байт для чтения... В топку неблокирующие сокеты... Это сообщение отредактировал(а) GrayCardinal - 24.6.2009, 15:10 |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Прикольно |
|||
|
||||
fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
В топку тогда еще и ioctl с дополнительным системным вызовом. |
|||
|
||||
SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
Вот есть маленький примерчик (рабочий) принятия сообщений...
=====================================================
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Можно по-подробнее про дополнительные системные вызова?
|
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 6 Всего: 22 |
При неблокирующих сокетах и select(), за один системный вызов можно проверить состояние множества сокетов. При использовании ioctl(FIONREAD), придется для каждого сокета делать системный вызов. При использовании select, процесс спит до наступления события. При использовании ioctl придется самому усыплять или как-то иначе занимать процесс и самому ловить момент когда сделать вызов. Системный вызов это дорогая операция и лишний раз ее лучше не делать. |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 3 Всего: 58 |
vinick,
Кто мешает делать select + FIONREAD на блокирующих ? Добавлено через 2 минуты и 25 секунд vinick, ИМХО, ты бредишь ![]() Это сообщение отредактировал(а) GrayCardinal - 25.6.2009, 13:17 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |