Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
Бамбук   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
6-45490
andrey_pst
2002-08-14 09:07
2002.10.14
Отправка почты.


4-45658
R_D
2002-08-23 12:46
2002.10.14
Убить прогу


14-45502
Cr@sh
2002-09-16 18:54
2002.10.14
Как можно довести училку в школе?


1-45319
Slava V.
2002-10-04 22:18
2002.10.14
Получение версии своего же приложения


14-45534
Poirot
2002-09-19 16:43
2002.10.14
Сотик. Какой лучше!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский