Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

WSARecv или ReadFile?   Найти похожие ветки 

 
Демо ©   (2009-10-29 23:56) [0]

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

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


 
Демо ©   (2009-10-30 00:00) [1]

PS. Использую перекрытый ввод/вывод с IOCP.


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


> кроме кроссплатформенности


Какая к лешему "кроссплатформенность", если  WinSock ?)


 
Демо ©   (2009-10-30 00:24) [3]


> Сергей М. ©   (30.10.09 00:19) [2]
> > кроме кроссплатформенностиКакая к лешему "кроссплатформенность",
>  если  WinSock ?)


-)

Ну да. сорри.
Кроссплатформенностью с дуру назвал разные версии winddows.


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

И всё же?


 
Сергей М. ©   (2009-10-30 00:34) [5]


> с дуру


Пишется слитно.


> И всё же?


На параметр lpFlags поглазей)


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


> назвал разные версии winddows


Все версии новее 3.11 так или иначе поддерживают WS2.


 
Демо ©   (2009-10-30 01:30) [7]


> На параметр lpFlags поглазей)


А он для семейства протоколов TCP имеет значение?


 
Сергей М. ©   (2009-10-30 08:14) [8]

Имеет.
Не только, но и в том числе.


 
Демо ©   (2009-10-30 12:46) [9]

Судя по MSDN, флаг lpFlags может быть комбинацией из трёх бит:

MSG_PEEK
MSG_OOB
MSG_PARTIAL

Для поточно-ориентированных сокетов остаётся только MSG_PEEK и MSG_OOB.

Конечно, это плюс к WSARecv.
Спасибо за наводку.

Есть ли кроме этого плюсы?


 
Сергей М. ©   (2009-10-30 12:52) [10]


> Есть ли кроме этого плюсы?


А разве этого не достаточно ?
Ведь Read/WriteFile[Ex] не даст тебе такой функциональности, если она требуется..


 
Демо ©   (2009-10-30 12:56) [11]


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


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


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

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

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


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


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


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

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


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

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


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

+ к [14]

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


 
Демо ©   (2009-10-30 14:10) [16]


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


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

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

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

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


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


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


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

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

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


 
Демо ©   (2009-10-30 14:12) [18]

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


 
Polevi ©   (2009-10-30 14:20) [19]

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


 
Демо ©   (2009-10-30 14:22) [20]


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


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


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


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


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


 
Демо ©   (2009-10-30 14:26) [22]

В 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:27) [23]

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


 
Демо ©   (2009-10-30 14:29) [24]


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


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


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


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


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


 
Демо ©   (2009-10-30 14:29) [26]


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


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


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

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


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


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


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


 
Демо ©   (2009-10-30 14:39) [29]


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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.067 c
15-1339145696
Инокентий
2012-06-08 12:54
2013.03.22
Задача по Excel


15-1338665541
Rouse_
2012-06-02 23:32
2013.03.22
Ребят, а что за фильм?


15-1334834070
tesseract
2012-04-19 15:14
2013.03.22
IDE мечты на kickstarter


15-1330357950
CRLF
2012-02-27 19:52
2013.03.22
А что такое "порты 2В/1Р"


15-1332165101
Abra
2012-03-19 17:51
2013.03.22
что-то с логикой не понятно,