Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизUDPSocket не получает сообщение Найти похожие ветки
← →
SAG (2004-03-30 15:54) [0]Не понятно как работать с UDPSocket компонентом в режиме сервера. Адрес локальный и порт настроены, сидим в ожидании пакета, но события OnRecieve нет... Пример
procedure TForm1.Button4Click(Sender: TObject);
begin
UDPClient.Open;
UDPClient.Active:=True;
UDPClient.ReceiveBuf(Buf,1000,0);
end;
← →
Verg © (2004-03-30 18:20) [1]А бесполезно ждать.
> Адрес локальный и порт настроены,
Помнится смотрел я этот UDPSocket....
Не знаю как устроен UDPSocket в седьмой Дельфе, но в шестой эти свойства не влияют ровным счетом ни на что. Тут этот UDPScoket как будь-то вообще недаделанный какой-то. Ему вообще не делают bind. Никогда :)
Поэтому, после connect-а (Acive := true или Open, а кстати у тебя получилось "масло маслянное") ядром ему всегда присваивается локалный адрес INADDR_ANY (если ты вообще не задал RemoteHost) или адрес сетевого интерфейса пригодного для передачи IP к RemoteHost (по таблице маршрутизации) и локальный порт каким-то случайным образом выбранный из свободных в служебном диапазоне. Не свойствам компонента присваивается! А в ядре, полям объекта socket, с которым связан компонент UDPSocket.
Вот. И управлять тем, на каком порту он будет принимать датаграммы я не представляю возможным.
После коннекта получившийся порт узнать можно (getsockname), но управлять - нет.
Почему так сделано - сам недоумеваю.
Вроде так. Приду домой, еще раз гляну....
← →
Verg © (2004-03-30 19:51) [2]Ну да, все так и есть в честерке.
Т.е. решить проблему можно только в обход компоненты - напрямую через WinSock.Bind
← →
SAG (2004-03-31 08:22) [3]спасибо... воспользовался компонентами инди и усе заработало
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.035 c