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

Вниз

Ах этот мерзкий UDP!!!!   Найти похожие ветки 

 
Aralekin   (2002-09-30 13:47) [0]

Тут на другой ветке уже было обсуждение этого вопроса, но так ни к чему и не пришли...Так что поднимаю этот вопрос опять...
Проблема вот в чем...
Всем вам известны компоненты NMUDP, IdUDPClient,IdUDPServer...
Так вот с помощью IdUDPClient делаю отсылку пакета на BroadCast.
Udp:=TIdUDPClient.Create(Self);
Udp.Active:=true;
Udp.BroadcastEnabled:=true;
Udp.Broadcast("Hello",21012);
...

NMUDP ловит его

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
Var
Buff:array [1..254] of char;
begin
NmUdp1.ReadBuffer(Buff,NumberBytes);
...
end;


и шлет ответ обратно на полученный IP, где IP - это ничто иное, как возвращаемый параметр "FromIP:String"

NMUDP1.RemoteHost:=FromIP;
str:="Hi!"
NMUDP1.SendBuffer(Str,Length(Str));

Вто тут возникает загвоздка...параметр FromIP возращает не тот IP, который нужен. Т.е. если БроадКаст посылался с машины с одной сетевой картой подключенной к ЛВС, то приемник отсылет обратно сообщение на правильный IP. А вот если широковещание производилось с машины с двумя картами, то приемник получает или локальный IP, или интернетовский IP отправителя. Ессно в первом случае все проходит ОК, а во втором возникает ошибка.
Вот такие дела. Что скажете, уважаемые Мастера?


 
Wonder   (2002-09-30 14:29) [1]

А вот теперь, пиши стр-ру своей сети по типу:
машина А с двумя сетевыми картами с адресами такими-то, маской такой-то (какой из них инетовский, какой ЛВС), машина В с одной сетевой картой с адресом таким-то. Как подключены сетевые карты, которые стоят на одной машине? К разным кабельным системам?


 
Aralekin   (2002-09-30 15:43) [2]

2 Wonder.
Ок! Значит структура сети такова:
Сеть А-ЛВС, В-интернетовская. Они никак не связанны.
Диапазон сети А: 167.33.1.1-167.33.255.255; Маска 255.255.0.0
Диапазон сети В: 192.168.1.1-192.168.1.255; Маска 255.255.255.0
Эти сети никак не связаны.

Есть комп К-1 с одной сетевой платой, подключенной к сети А. IP=167.33.10.254.
Комп К-2 имеет две платы с подключением к сети А(IP=167.33.36.142) и к сети В(IP=192.168.1.20).
Вот такая структура. Я ничего не забыл?


 
Wonder   (2002-09-30 16:32) [3]

А теперь идем на http://www.faqs.org/rfcs/std/std5.html и читаем про посылку широковещательных сообщений.
Потом читаем в спецификации WinSock-а про то же:

2.2.4 Broadcasting
By using a datagram socket, it is possible to send broadcast packets on many networks supported by the system. The network itself must support broadcast: the system provides no simulation of broadcast in software. Broadcast messages can place a high load on a network, since they force every host on the network to service them. Consequently, the ability to send broadcast packets has been limited to sockets which are explicitly marked as allowing broadcasting. Broadcast is typically used for one of two reasons: it is desired to find a resource on a local network without prior knowledge of its address, or important functions such as routing require that information be sent to all accessible neighbors.

Далее вспоминаем, что я говорил про результат, возвращаемый ф-цией GetHostByName().
Затем задаем вопросы, если что-то непонятно.


 
совсем Новенький   (2002-10-01 10:58) [4]

Если кто может дайте пожалуйста точные инструкции, каки послать широковещательный вопрос, и как получить ответ, я в сетях новичок, а с английским не дружу потому не смог разобраться в ссылке которая здесь промелькнула :)


 
совсем Новенький   (2002-10-01 11:12) [5]

Где взять компоненты IdUDPClient,IdUDPServer у меня в стандартной поставке 5 Delphi их нет?


 
совсем Новенький   (2002-10-01 12:48) [6]

Дайте пожалуйста кто нибуь ответ!!!!


 
совсем Новенький   (2002-10-03 00:40) [7]

Вы хоть скажите, вопрос очень простой и Вам в лом ответить, или наоборот сложный!


 
Вася Пупкин   (2002-10-03 12:59) [8]

http://nevrona.com/indy/


 
Rouse_   (2002-10-05 01:27) [9]

Ув. Aralekin, я тоже задавал такой вопрос (вы тоже принимали участие в той ветке) так вот мне посоветовали отсылать при броадкасте правильный IP адрес (просто добавлять его в тело сообщения) у меня все получилось, попробуйте и вы (хотя я понимаю что это немного кривовато, но всеже выход)

Желаю успехов


 
совсем Новенький   (2002-10-06 23:06) [10]

Спасибо за советы попробую!



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

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

Наверх





Память: 0.47 MB
Время: 0.02 c
1-4311
Part
2002-11-21 10:09
2002.12.02
ComboBox помогите плиз!!!


14-4565
Smirnoff
2002-11-11 17:09
2002.12.02
Где взять этот компонент - выбор директории ?


1-4372
chak
2002-11-22 12:29
2002.12.02
Копирование файлов+ProgressBar


6-4553
SZap
2002-10-07 19:22
2002.12.02
.txt на FTP


1-4485
pasha_vl
2002-11-20 16:19
2002.12.02
Русский язык





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