![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И снова multicast
Sla © (2004-01-22 17:15:00)Народ! Пожалуйста, подкиньте пример работы с мультикастами на Delphi! Я уже 3й месяц ищу и пытаюсь сделать, все никак не выходит. Выручайте!
Или может хотя бы подскажите немного? основные api я для этого знаю, но они в на си... а перевести я немогу ;((
заране спасибо
Sla (2004-01-27 04:45:00) [1]Спасибо большое ... буду пытатся.
Но многое все таки не понятно ;(
Может пример таки есть у кого нить?
Verg (2004-01-26 11:40:00) [2]
> Rouse_ © (24.01.04 20:02) [8]
Может быть... Но, скорее нет, чем да...
Про это уже очень хорошо написано в книгах по сетевому программированию. Поэтому, такая статья будет просто рефератом или даже плагиатом....
Нет ни времени, и, если чесно, ни желания переписывать то, что уже написано и неоднократно.
Rouse_ (2004-01-24 20:02:00) [3]> [7] Verg © (24.01.04 14:07)
Я бы посоветовал написать Вам статью...
Дело в том что вопросы по данному сабжу возникают постоянно...
С моей стороны почти закончена статья по мэйлслотам (первое место по вопросам в сетях)...
Если готовы содрудничать... адреса знаете...
Verg (2004-01-24 14:07:00) [4]Для полного счастья можно
val := 0;
len := sizeof(val);
setsockopt (sock, IPPROTO_IP, IP_MULTICAST_LOOP, @val, len);
Это для того, чтобы отправленные тобой на мультикастовый адрес датаграммы не прилетали тебе же самому (эхоподавление :))).
Verg (2004-01-24 14:03:00) [5]1. Создаешь сокет. Сокет должен быть либо SOCK_DGRAM либо SOCK_RAW.
sock = socket(AF_INET, SOCK_RAW, <Нужный протокол>);
2. Обязательно биндишь его (bind) на нужный порт для DGRAM или на нулевой для RAW.
3. Подписываешь его на MULTICAST
Fillchar(Mreq, sizeof(Mreq), 0);
mreq.imr_multiaddr.s_addr := mcast_addr;// 224.0.0.9, например
mreq.imr_interface.s_addr := if_addr; //212.212.212.212, например
setsockopt( sock,IPPROTO_IP, IP_ADD_MEMBERSHIP,
@Mreq,sizeof(Mreq));
Где Mreq - это структура типа
TIPMreq = packed record
imr_multiaddr : TInAddr; // Адрес мультикаста
imr_interface : TInAddr; // Адрес сетевого интерфейса (сетевой карточки)
end;
Ну и все, собственно, читаешь/пишешь из/в него как обычно ты это делаешь сокетом.
Alex Konshin (2004-01-24 10:20:00) [6]Зачем подробнее, потом еще будут обвинять меня в нескромности...
:-)
http://home.earthlink.net/~akonshin/index.htm
Sla (2004-01-24 04:45:00) [7]>Насчет перевода: мой unit winsock2 уже скачал?
Нет... расскажите подробнее пожалуйста!
Alex Konshin (2004-01-23 23:02:00) [8]Насчет перевода: мой unit winsock2 уже скачал?
Sla (2004-01-23 17:35:00) [9]Читал... не понятно :((
А конкретно не выходит подключение к группе и ловля пакетов...
тоесть даже не то что бы не выходит, незнаю как сделать... там в примерах на си написано ;(
Verg (2004-01-22 17:56:00) [10]По-конретнее бы.
Что именно не выходит.
Чтиал ли это:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q131/9/78.asp&NoWebContent=1