Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WSARecv или ReadFile?


Страницы:   1 2

Демо ©   (2009-10-29 23:56:00) 

В WinSock2 появились новые функции - WSARecv и WSASend.
Как я понимаю, кроме кроссплатформенности они ничем не лучше старых ReadFile и WriteWile.

Просьбы высказать мысли по этому поводу.
Имеются ли какие-то преимущества у новых функций?


Сергей М.   (2009-10-30 14:43:00) [1]

Ну выскажи Коншину своё "фи", если тебе от этого полегчает)


Демо   (2009-10-30 14:39:00) [2]


> Сергей М. ©   (30.10.09 14:36) [28]
> > я полдня бился над WSAAcceptЯ встроил его в TIdCustomTCPServer
> за час.Лажа с параметром всплыла и была исправлена при первом
> же тестовом прогоне)


А я, к сожалению, впервые использовал WSAAccept и понадеялся на портированный модуль, искал у себя ошибки.


Сергей М.   (2009-10-30 14:36:00) [3]


> я полдня бился над WSAAccept


Я встроил его в TIdCustomTCPServer за час.
Лажа с параметром всплыла и была исправлена при первом же тестовом прогоне)


Демо   (2009-10-30 14:30:00) [4]

Эх, если бы знать, что это единственный недочёт...


Демо   (2009-10-30 14:29:00) [5]


> > Всего-то один параметрНу бывают маленькие неприятности,
>  куда ж без них)


Ага... а я полдня бился над WSAAccept -))


Сергей М.   (2009-10-30 14:29:00) [6]


> Всего-то один параметр


Ну бывают маленькие неприятности, куда ж без них)


Демо   (2009-10-30 14:29:00) [7]


> Сергей М. ©   (30.10.09 14:25) [21]
> > Возможно ли на этом уровне уменьшить угрозу от SYN-атак?
> Нет.Этим должен заниматься файрвол.


Понятно. Значит не буду этим заморачиваться...


Демо   (2009-10-30 14:27:00) [8]

Всего-то один параметр...


Демо   (2009-10-30 14:26:00) [9]

В winsock2.pas:

function WSAAccept( s : TSocket; addr : TSockAddr; addrlen : PInteger; lpfnCondition : LPCONDITIONPROC; dwCallbackData : DWORD ): TSocket; stdcall;

 TSockAddrIn = packed record
   case Integer of
     0: (sin_family : u_short;
         sin_port   : u_short;
         sin_addr   : TInAddr;
         sin_zero   : array[0..7] of Char);
     1: (sa_family  : u_short;
         sa_data    : array[0..13] of Char)
 end;
 PSockAddrIn = ^TSockAddrIn;
 TSockAddr   = TSockAddrIn;
 PSockAddr   = ^TSockAddr;
 SOCKADDR    = TSockAddr;
 SOCKADDR_IN = TSockAddrIn;


Вот так работает:

 function WSAAccept(
   s: TSocket;
   addr:PSockAddr;
   addrlen: PInteger;
   lpfnCondition: LPCONDITIONPROC;
   dwCallbackData: DWORD): TSocket; stdcall; external 'ws2_32.dll';


А описание структур взял из стандартного winsock.pas.


Сергей М.   (2009-10-30 14:25:00) [10]


> Возможно ли на этом уровне уменьшить угрозу от SYN-атак?


Нет.
Этим должен заниматься файрвол.


Демо   (2009-10-30 14:22:00) [11]


> Polevi ©   (30.10.09 14:20) [19]
> Я использую его модуль, проблем не было


Проблема возникла при реализации WSAAccept с LPCONDITIONPROC.


Polevi   (2009-10-30 14:20:00) [12]

Я использую его модуль, проблем не было


Демо   (2009-10-30 14:12:00) [13]

PS.
Обнаружил ошибки в портированном WINSOCK2.PAS от Алексея Коншина...


Демо   (2009-10-30 14:11:00) [14]


> Сергей М. ©   (30.10.09 14:06) [15]
> + к [14]WSAAccept позволяет организовать настоящее условное
> акцептирование запросов на соединение


WSAAccept я уже реализовал именно таким способом.

Вопрос по этому поводу:

Возможно ли на этом уровне уменьшить угрозу от SYN-атак?


Демо   (2009-10-30 14:10:00) [15]


> Polevi ©   (30.10.09 14:00) [14]
> WSA позволяют работать с цепочкой буферов, иногда это удобно


У меня не будет обмена данными большого размера, планируется обмен короткими пакетами.

На сервере хочу предусмотреть возможность работы под хорошей нагрузкой, поэтому SOCKET IO OVERLAPPED + IOCP.
На клиенте можно попроще - просто SOCKET IO OVERLAPPED.

Конечно, не факт, что сервер будет очень уж популярен, но предусмотреть нужно.

Просто наконец-то взялся за проект, который мечтаю уже 10 лет сделать.
Надеюсь, что наконец-то воплощу в реальность.


Сергей М.   (2009-10-30 14:06:00) [16]

+ к [14]

WSAAccept позволяет организовать настоящее условное акцептирование запросов на соединение


Polevi   (2009-10-30 14:00:00) [17]

WSA позволяют работать с цепочкой буферов, иногда это удобно


Демо   (2009-10-30 13:49:00) [18]


> Сергей М. ©   (30.10.09 13:03) [12]
> И опять же касаемо кроссплатформенности - как раз по этим
> соображениям не следует пользовать ни WSA-функции ни Read/WriteFile.
>


Ну что касаемо кроссплатформенности - тут у меня проблем нет.
Проект будет работать на платформе Windows.

Поэтому свой выбор сделаю всё-таки в пользу WSA-функций, видимо.


Сергей М.   (2009-10-30 13:03:00) [19]

И опять же касаемо кроссплатформенности - как раз по этим соображениям не следует пользовать ни WSA-функции ни Read/WriteFile.

Только send[to]/recv[from] - они обязаны присутствовать на любой платформе, поддерживающей базовую функциональность гнезд Беркли.


Демо   (2009-10-30 12:56:00) [20]


> Сергей М. ©   (30.10.09 12:52) [10]
> > Есть ли кроме этого плюсы?А разве этого не достаточно
> ?Ведь Read/WriteFile[Ex] не даст тебе такой функциональности,
>  если она требуется..


Спасибо, Сергей.
Как раз вот на эту инфу с флагом не обратил внимания.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо