Главная страница
    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.008 c
1-73622
carmen
2002-09-11 23:19
2002.09.23
Как имея DFM файл построить по нему форму программно


1-73731
Демонов Е.В.
2002-09-11 13:34
2002.09.23
Loaded


1-73672
AL2002
2002-09-10 17:30
2002.09.23
Undeclared identifier WM_FONTCHANGE


14-73817
MJH
2002-08-26 15:40
2002.09.23
Форум атакуют недоумки-дауны?


3-73549
savva
2002-09-03 12:24
2002.09.23
поиск русских слов в BLOB поле (хранится RTF данные)





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