-
В WinSock2 появились новые функции - WSARecv и WSASend.
Как я понимаю, кроме кроссплатформенности они ничем не лучше старых ReadFile и WriteWile.
Просьбы высказать мысли по этому поводу.
Имеются ли какие-то преимущества у новых функций?
-
PS. Использую перекрытый ввод/вывод с IOCP.
-
> кроме кроссплатформенности
Какая к лешему "кроссплатформенность", если WinSock ?)
-
> Сергей М. © (30.10.09 00:19) [2]
> > кроме кроссплатформенностиКакая к лешему "кроссплатформенность",
> если WinSock ?)
-)
Ну да. сорри.
Кроссплатформенностью с дуру назвал разные версии winddows.
-
И всё же?
-
> с дуру
Пишется слитно.
> И всё же?
На параметр lpFlags поглазей)
-
> назвал разные версии winddows
Все версии новее 3.11 так или иначе поддерживают WS2.
-
> На параметр lpFlags поглазей)
А он для семейства протоколов TCP имеет значение?
-
Имеет.
Не только, но и в том числе.
-
Судя по MSDN, флаг lpFlags может быть комбинацией из трёх бит:
MSG_PEEK
MSG_OOB
MSG_PARTIAL
Для поточно-ориентированных сокетов остаётся только MSG_PEEK и MSG_OOB.
Конечно, это плюс к WSARecv.
Спасибо за наводку.
Есть ли кроме этого плюсы?
-
> Есть ли кроме этого плюсы?
А разве этого не достаточно ?
Ведь Read/WriteFile[Ex] не даст тебе такой функциональности, если она требуется..
-
> Сергей М. © (30.10.09 12:52) [10]
> > Есть ли кроме этого плюсы?А разве этого не достаточно
> ?Ведь Read/WriteFile[Ex] не даст тебе такой функциональности,
> если она требуется..
Спасибо, Сергей.
Как раз вот на эту инфу с флагом не обратил внимания.
-
И опять же касаемо кроссплатформенности - как раз по этим соображениям не следует пользовать ни WSA-функции ни Read/WriteFile.
Только send[to]/recv[from] - они обязаны присутствовать на любой платформе, поддерживающей базовую функциональность гнезд Беркли.
-
> Сергей М. © (30.10.09 13:03) [12]
> И опять же касаемо кроссплатформенности - как раз по этим
> соображениям не следует пользовать ни WSA-функции ни Read/WriteFile.
>
Ну что касаемо кроссплатформенности - тут у меня проблем нет.
Проект будет работать на платформе Windows.
Поэтому свой выбор сделаю всё-таки в пользу WSA-функций, видимо.
-
WSA позволяют работать с цепочкой буферов, иногда это удобно
-
+ к [14]
WSAAccept позволяет организовать настоящее условное акцептирование запросов на соединение
-
> Polevi © (30.10.09 14:00) [14]
> WSA позволяют работать с цепочкой буферов, иногда это удобно
У меня не будет обмена данными большого размера, планируется обмен короткими пакетами.
На сервере хочу предусмотреть возможность работы под хорошей нагрузкой, поэтому SOCKET IO OVERLAPPED + IOCP.
На клиенте можно попроще - просто SOCKET IO OVERLAPPED.
Конечно, не факт, что сервер будет очень уж популярен, но предусмотреть нужно.
Просто наконец-то взялся за проект, который мечтаю уже 10 лет сделать.
Надеюсь, что наконец-то воплощу в реальность.
-
> Сергей М. © (30.10.09 14:06) [15]
> + к [14]WSAAccept позволяет организовать настоящее условное
> акцептирование запросов на соединение
WSAAccept я уже реализовал именно таким способом.
Вопрос по этому поводу:
Возможно ли на этом уровне уменьшить угрозу от SYN-атак?
-
PS.
Обнаружил ошибки в портированном WINSOCK2.PAS от Алексея Коншина...
-
Я использую его модуль, проблем не было