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

Вниз

Помогите разобрать пример, пожалуйста   Найти похожие ветки 

 
Бамбук   (2002-08-06 22:13) [0]

procedure TMainForm.FormCreate(Sender: TObject);
var Init:TWSAData;
SockOpt:BOOL;
Sock:TSocket;
Target:TSockAddrIn;
begin
WSAStartup($101,Init);
Sock:=Socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
SockOpt:=TRUE;
SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST,PChar(@SockOpt),SizeOf(SockOpt)) ;
Target.sin_port:=htons(8167);//номер порта
Target.sin_addr.S_addr:=INADDR_BROADCAST;
Target.sa_family:=AF_INET;
SendTo(Sock,Data,DataBytes,0,Target,SizeOf(Target));
WSACleanup;
end;


Плиз, к хелпах не отсылайте.

1) WSAStartup($101,Init); - что за $101 ?

2) SetSockOpt(Sock,SOL_SOCKET, SO_BROADCAST,PChar(@SockOpt),SizeOf(SockOpt)) ;
...
Target.sin_addr.S_addr:= INADDR_BROADCAST;

Зачем столько упоминаний, что это броадкаст ? Одного раза недостаточно ?


 
DiamondShark ©   (2002-08-06 22:51) [1]


> 1) WSAStartup($101,Init); - что за $101 ?


Требуемая версия WinSock. В данном случае 1.1



> 2) SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST,PChar(@SockOpt),SizeOf(SockOpt))
> ;
> ...
> Target.sin_addr.S_addr:=INADDR_BROADCAST;
>
> Зачем столько упоминаний, что это броадкаст ? Одного раза
> недостаточно ?


Затем, что это разные вещи.

Первое упоминание -- разрешение передачи через этот сокет широковещательных сообщений

Второе упоминание -- специальный адрес, означающий "Всем! Всем! Всем! Говорит Москва!"


 
Бамбук   (2002-08-06 23:54) [2]

Ясно ! Спасибо огромное !

Остались еще вопросы.

Что такое Init в WSAStartup($101, Init); ?
LPWSADATA lpWSAData - а откуда взялось Init ?

Также не нашел, что такое PF_INET в Sock:=Socket( PF_INET,SOCK_DGRAM,IPPROTO_UDP);

А также, что такое SOL_SOCKET в SetSockOpt(Sock, SOL_SOCKET,SO_BROADCAST,PChar(@SockOpt),SizeOf(SockOpt)) ;


 
Digitman ©   (2002-08-07 09:05) [3]

lpWSAData - имя формального параметра типа LPWSADATA в декларации ф-ции

Init - имя переменной - фактического параметра того же типа, которую ты обязан объявить перед вызовом ф-ции

Например,
var Init: WSAData;



Константа PF_INET (Protocol Family) - в дан.случае то же самое, что и AF_INET (Address Family)



SOL_SOCKET - константа, определяющая одно из допустимых значение параметра level в ф-ции управления опциями гнезда

[in] The level at which the option is defined; the supported levels include SOL_SOCKET and IPPROTO_TCP. (See annex for more protocol-specific levels.)


 
Бамбук   (2002-08-07 23:44) [4]

Непонятно вот что Зачем объявлять, передавать Init в WSAStartup($101,Init); если потом эта Init нигде не используется ?


 
Digitman ©   (2002-08-08 08:56) [5]

Если Init не используется в TCustomWinSocket, это еще не значит, что информация, возвращаемая в переменную Init, не имеет никакого практ.смысла. А информация эта (возвращаемая безусловно), например, может сказать тебе о реально установленной версии Winsock в случае затребования тобой версии, выше установленной.
В дан. случае ты требуешь v1.1, поэтому Winsock не даст отказ при инициализации. Если же ты, к примеру, затребуешь v3.x ($300), то ф-ция WSAStartup (инициализация сессии) даст отказ, а содержимое Init покажет макс.версию, которую допустимо было требовать при инициализации сессии (скорее всего это будет v2.2, не выше)


 
Бамбук   (2002-08-09 19:20) [6]

А где вообше можно почитать по русски доступно про программирование сокетов в чистом API ?


 
Digitman ©   (2002-08-12 08:20) [7]

http://books.itep.ru


 
Бамбук   (2002-08-12 22:53) [8]

Такого сайта не существует


 
Digitman ©   (2002-08-13 08:47) [9]

Извини, чуть исказил, вот верная ссылка :

http://book.itep.ru



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
7-45602
AlexNO
2002-08-06 13:24
2002.10.14
Сканирование


3-45172
AlexSN
2002-09-20 16:46
2002.10.14
как поместить DataTimePicker в DBgrid ?


3-45226
AlexeyBl
2002-09-21 18:08
2002.10.14
Как поместить картинку в заголовок столбца TBDGrid ?


1-45434
zje
2002-10-03 15:04
2002.10.14
Как можно достать все иконы из dll или exe файла?


4-45615
Igor__
2002-08-29 14:29
2002.10.14
Стили ХР