Главная страница
    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.007 c
1-4425
Ag2002
2002-11-23 11:10
2002.12.02
Информация о файле


1-4320
nelud
2002-11-21 17:20
2002.12.02
Помогите потестить!


1-4404
Шурик
2002-11-22 20:13
2002.12.02
печать в Word из приложения с использоваеием OLE


6-4543
Aralekin
2002-09-30 13:47
2002.12.02
Ах этот мерзкий UDP!!!!


1-4290
adolf_99
2002-11-19 19:33
2002.12.02
Удаление в memo





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