Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

UDPSocket не получает сообщение [D7, WinXP]


SAG ©   (2004-03-30 15:54:00) 

Не понятно как работать с UDPSocket компонентом в режиме сервера. Адрес локальный и порт настроены, сидим в ожидании пакета, но события OnRecieve нет... Пример


procedure TForm1.Button4Click(Sender: TObject);
begin
 UDPClient.Open;
 UDPClient.Active:=True;
 UDPClient.ReceiveBuf(Buf,1000,0);
end;


SAG   (2004-03-31 08:22:00) [1]

спасибо... воспользовался компонентами инди и усе заработало


Verg   (2004-03-30 19:51:00) [2]

Ну да, все так и есть в честерке.
Т.е. решить проблему можно только в обход компоненты - напрямую через WinSock.Bind


Verg   (2004-03-30 18:20:00) [3]

А бесполезно ждать.


> Адрес локальный и порт настроены,


Помнится смотрел я этот UDPSocket....

Не знаю как устроен UDPSocket в седьмой Дельфе, но в шестой эти свойства не влияют ровным счетом ни на что. Тут этот UDPScoket как будь-то вообще недаделанный какой-то. Ему вообще не делают bind. Никогда :)
Поэтому, после connect-а (Acive := true или Open, а кстати у тебя получилось "масло маслянное") ядром ему  всегда присваивается локалный адрес INADDR_ANY (если ты вообще не задал RemoteHost) или адрес сетевого интерфейса пригодного для передачи IP к RemoteHost (по таблице маршрутизации) и локальный порт каким-то случайным образом выбранный из свободных в служебном диапазоне. Не свойствам компонента присваивается! А в ядре, полям объекта socket, с которым связан компонент UDPSocket.
Вот. И управлять тем, на каком порту он будет принимать датаграммы я не представляю возможным.
После коннекта получившийся порт узнать можно (getsockname), но управлять - нет.
Почему так сделано - сам недоумеваю.

Вроде так. Приду домой, еще раз гляну....


Наверх

Титульная страница Поиск, карта сайта Написать письмо