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

Вниз

BroadCast в Delphi   Найти похожие ветки 

 
Net Cognition   (2002-07-07 12:24) [0]

Здравствуйте.
Каким образом можно послать широковещательной сообщение в ЛВС средствами делфи или WinAPI (не суть важно) главное чтобы послалось. Можно ли это сделать через Client(Server)Socket в Делфи.
С Уважением Net Cognition.


 
[nex]   (2002-07-07 22:54) [1]

Попробуй почитать про UDP, на этом строятся все безсерверные чаты...


 
Net Cognition   (2002-07-08 00:00) [2]

Я посмотрю, но если речь идет о чате (насколько Я понимаю), то там не все хосты, а только часть и посылка идет в цикле по всем подкюченым каналам. А нужно конкретный broadcast, т.е. всем хостам всей сети (всех сегментов).


 
Velocity   (2002-07-08 06:27) [3]

Надо направлять пакет на наибольший возможный адрес в сети. Например я так делаю: типовой IP - 169.254.0.xxx - отсылаю на 169.254.0.255, ловится всеми, но все равно броадкаст использовать не рекомендую, бывает сервер такого не поддерживает, лучше циклом по всем адресам пройтись.


 
Net Cognition   (2002-07-08 20:15) [4]

В Unix на каждый интерфейс (сетевая карта) взависимости от конкретной подсети (169.254.0.xxx - например) существует свой brodcast адресс. При использовании функции setsockopt(...) и параметра SO_BROADCAST он сам вытаскивает этот адресс. Это удобно, чтобы для каждой подсети не bild"ить проект или не натруждать user"a. В WinSock есть таже самамя функция
setsockopt(...), но вопрос как в TClientSocket установить эту опцию или узнать этот адресс.
P.S. например host=localhost он (Delphi) понимает что это 127.0.0.1 а вот пишишь host=broadcast ругается на адресс.


 
MrBeer   (2002-07-19 00:59) [5]

Naskolko ya znaju broadcast adres vichislaetsja sledujuschim obrazom - broadcast = (IP or (not netmask)) - tobish na IP addres nakladivaetsja invertirovanii netmask cherez binarnii OR.

best regards.


 
Digitman   (2002-07-19 09:56) [6]

Ндентификатор localhost определен в файле hosts и имеет значение по-умолчанию 127.0.0.1

Никакого broadcast там нет и быть не может.

В принципе, ты имеешь полное право и можешь самостоятельно декларировать в этом файле любое имя хоста, но в ситуации с TClientSocket тебе это никак не поможет.

Объект класса TClientSocket при выполнении метода Open() создает гнездо, инициализируемое для работы в режиме SOCK_STREAM. Бродкаст же возможен только для гнезд, инициализированных для работы в режиме SOCK_DGRAM. Посему класс TClientSocket не может работать с использованием UDP-протокола, и бродкаст ты выполнить его средствами не сможешь. И нет никакого резона пытаться выполнить setsockopt(so_broadcast) для поточного гнезда - вызов 100%-но даст отказ.

Для целей бродкаста используй либо класс TNMUDP либо создавай гнездо и работай с ним "ручками" средствами непосредственно WinsockAPI.


 
Digitman   (2002-07-19 10:12) [7]

Вот подтверждение (фрагмент хэлпа):

sendto is normally used on a connectionless socket to send a datagram to a specific peer socket identified by the to parameter. Even if the connectionless socket has been previously connected to a specific address, to overrides the destination address for that particular datagram only. On a connection-oriented socket, the to and tolen parameters are ignored; in this case, the sendto is equivalent to send.



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

Форум: "Сети";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-73696
Маньяк
2002-09-02 14:58
2002.09.23
Склонение Фамилий и Имен


3-73503
NewAlexAlex
2002-08-29 14:12
2002.09.23
Искажение русских букв при копировании из таблицы.


7-73910
Fredericco
2002-07-12 15:03
2002.09.23
Shell=MyProg.exe


3-73547
Shtukatur
2002-08-30 08:38
2002.09.23
Как тут быть?


3-73533
sniknik
2002-09-01 00:45
2002.09.23
Поддерживает Jet тип Grafic?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский