recv vs. WSARecv
От: Fedor.P  
Дата: 19.03.05 23:37
Оценка:
Привет Всем!
Подскажите, пожалуйста, в каких ситуация нужны WSA-функции? Например, когда следует использовать WSARecv, а когда просто recv?

И вообще, зачем товарищи из M$ продублировали все SocketAPI-функции своими WSA-аналогами!

Хочется все-таки иметь какой-то единый универсальный вариант
Re: recv vs. WSARecv
От: Michael Chelnokov Украина  
Дата: 20.03.05 11:12
Оценка:
Здравствуйте, Fedor.P, Вы писали:

FP>Например, когда следует использовать WSARecv, а когда просто recv?


WSARecv следует использовать для overlapped (не путать с non-blocking) I/O.
Для той же цели можно использовать ReadFile, но WSARecv предпочтительнее из-за дополнительных опций и отсутствия лишнего переключения в ядро и обратно.

FP>И вообще, зачем товарищи из M$ продублировали все SocketAPI-функции своими WSA-аналогами!


Для нестандартное расширений функциональности.

FP>Хочется все-таки иметь какой-то единый универсальный вариант


Нет ничего идеального в этом мире
Re: recv vs. WSARecv
От: Andrew.W Worobow https://github.com/Worobow
Дата: 20.03.05 12:09
Оценка:
Здравствуйте, Fedor.P, Вы писали:

FP>И вообще, зачем товарищи из M$ продублировали все SocketAPI-функции своими WSA-аналогами!


Неа не все....
Не все кто уехал, предал Россию.
Re[2]: recv vs. WSARecv
От: Fedor.P  
Дата: 20.03.05 12:57
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>WSARecv следует использовать для overlapped (не путать с non-blocking) I/O.

MC>Для той же цели можно использовать ReadFile, но WSARecv предпочтительнее из-за дополнительных опций и отсутствия лишнего переключения в ядро и обратно.

Спасибо за ответ!
Осталось только рзобраться с этой интересной темой — overlapped I/O (кажется IOCP из этой серии?). Но на мое удивление в интернете очень мало информации на тему "Introduction to IOCP".
Если у Вас есть какие-нибудь ссылочки, поделитесь пожалуйста!
Re[3]: recv vs. WSARecv
От: Michael Chelnokov Украина  
Дата: 20.03.05 18:12
Оценка:
Здравствуйте, Fedor.P, Вы писали:

FP>Осталось только рзобраться с этой интересной темой — overlapped I/O (кажется IOCP из этой серии?).


Нет, не совсем из этой. IOCP — лишь один из способов получения уведомлений о завершении операции ввода-вывода.
Кроме него еще существуют:
— установка события (поле OVERLAPPED.hEvent) с различными вариациями его ожидания;
— вызов APC (смотрите, например, функцию ReadFileEx).

FP>Но на мое удивление в интернете очень мало информации на тему "Introduction to IOCP".

FP>Если у Вас есть какие-нибудь ссылочки, поделитесь пожалуйста!

MSDN, ключевые слова "I/O completion port"
Тема различных способов ввода-вывода немного (но неплохо) по-русски описана в этой
Автор(ы): Джеффри Рихтер, Джейсон Кларк
В книге Джеффри Рихтера и Джейсон Кларка исчерпывающе описаны функции новой операционной системы
Microsoft — Windows 2000, позволяющие создавать высокопроизводительные и
надежные серверные приложения. Менеджер управления службами, контроль
производительности и системных событий, асинхронный ввод-вывод, система
безопасности и защищенное взаимодействие приложений обеспечат надежную и
эффективную работу ваших приложений в качестве служб операционной системы 24
часа в сутки 7 дней в неделю. Все главы содержат примеры, написанные на C++,
демонстрирующие описываемые технологии. Вы можете использовать в своих
приложениях фрагменты этих программ и готовые классы C++, исходные тексты
которых содержатся на прилагаемом компакт-диске. Книга состоит из 12 глав, 2
приложений и предметного указателя. Прилагаемый к книге компакт-диск содержит
программное обеспечение, примеры приложений, документацию и электронную версию
книги.
книге. К сожалению, в электронном виде у меня она только на английском.
Ну и тут
Автор: Michael Chelnokov
Дата: 09.06.03
я приводил немного ссылок на статьи из MSDN, имеющие отношение к теме использования IOCP в (сетевых) сервисах.
Re[4]: recv vs. WSARecv
От: Fedor.P  
Дата: 22.03.05 06:28
Оценка:
Спасибо! интересные ссылочки, оч. помогли!
Re[2]: recv vs. WSARecv
От: Edge  
Дата: 23.03.05 17:31
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>WSARecv следует использовать для overlapped (не путать с non-blocking) I/O.


Также не забываем по мегафичу — scatter/gather I/O. В некоторых ситуациях здорово спасает
Re[3]: recv vs. WSARecv
От: Fedor.P  
Дата: 23.03.05 18:35
Оценка:
Здравствуйте, Edge, Вы писали:

E>Здравствуйте, Michael Chelnokov, Вы писали:


MC>>WSARecv следует использовать для overlapped (не путать с non-blocking) I/O.


E>Также не забываем по мегафичу — scatter/gather I/O. В некоторых ситуациях здорово спасает




Блин, да где же найти такие статьи, где было бы описаны идеи этих всех слов: "overlapped, scatter и gather". Не то, какие преимущества они дают (это уж следствие), а то, каким образом эти преимущества получаются. Т.е. для новичков чего-нить!
Re[4]: recv vs. WSARecv
От: Edge  
Дата: 23.03.05 20:46
Оценка:
Здравствуйте, Fedor.P, Вы писали:

FP>Блин, да где же найти такие статьи, где было бы описаны идеи этих всех слов: "overlapped, scatter и gather". Не то, какие преимущества они дают (это уж следствие), а то, каким образом эти преимущества получаются. Т.е. для новичков чего-нить!


Для новичков ссылок, выданных выше, должно хватить. Также почитай серию статей здесь, там описано много граблей. А вообще, в этих концепциях ничего сложного нет, сложны только вопросы практической реализации...
Re[5]: recv vs. WSARecv
От: Fedor.P  
Дата: 24.03.05 05:34
Оценка:
Спасибо большое за ссылочку!

Здравствуйте, Edge, Вы писали:

E>Для новичков ссылок, выданных выше, должно хватить. Также почитай серию статей здесь, там описано много граблей. А вообще, в этих концепциях ничего сложного нет, сложны только вопросы практической реализации...
Re[2]: recv vs. WSARecv
От: TarasCo  
Дата: 24.03.05 07:33
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Fedor.P, Вы писали:


FP>>Например, когда следует использовать WSARecv, а когда просто recv?


MC>WSARecv следует использовать для overlapped (не путать с non-blocking) I/O.

MC>Для той же цели можно использовать ReadFile, но WSARecv предпочтительнее из-за дополнительных опций и отсутствия лишнего переключения в ядро и обратно.

Я бы не советовал использовать файловые функции с сокетами. Сокет может быть не файлом. Особенно эта ситуация вероятна, если установлен т.н LSP фильтр. В таком случае операция ReadFile просто обломится.
Да пребудет с тобою сила
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.