Форум: "Сети";
Текущий архив: 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.46 MB
Время: 0.006 c