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

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

Сокеты Windows - порт отправителя [D7, WinXP]


Michael ©   (2009-12-02 16:31:00) 

Доброго времени суток!
Для передачи данных по протоколу UDP использую стандартные сокеты Windows. Столкнулся со следующей проблемой - в связи со спецификой работы оборудования на другом конце, мне необходимо указывать явно порт отправителя; иначе он получается "плавающим". Как это можно сделать? Спасибо.


Сергей М.   (2009-12-03 12:02:00) [1]


> В ситуации, когда я сам не знаю, с какого порта отправляю
> данные, я не знаю, на каком порте ловить ответ.


На том же самом, с которого ты отправил оборудованию дейтаграмму.
Ты сокет-то не закрывай после отправки - с какого сокета отравлял, тот и примет ответ


DVM   (2009-12-03 11:25:00) [2]


> Michael   (03.12.09 08:38) [3]


> Я так понимаю, что bind осуществляет связывание сокета с
> локальным адресом для приема данных.

не обязательно для приемы, для передачи тоже можно.

struct sockaddr_in {
       short   sin_family;
       u_short sin_port;
       struct  in_addr sin_addr;
       char    sin_zero[8];
};


Anatoly Podgoretsky   (2009-12-03 09:01:00) [3]

При UDP соединение не устанавливается, поэтому бессмысленно говорить о порте с которого послано, тем более пытать дважды открыть порт, будет просто ошибка.


Michael   (2009-12-03 08:38:00) [4]


> Сергей М. ©   (02.12.09 22:27) [1]
> И что же это за "специфика", позволь полюбопытствовать ?
> За каким лешим потребовалось указывать порт отправителя
> на прикладном уровне, если он и так уже фигурирует на транспортном
> уровне ?

Специфика в том, что оборудование на другом конце отвечает именно на тот порт, с которого пришли данные. В ситуации, когда я сам не знаю, с какого порта отправляю данные, я не знаю, на каком порте ловить ответ.


> DVM ©   (03.12.09 01:07) [2]
> bind?

Я так понимаю, что bind осуществляет связывание сокета с локальным адресом для приема данных.


DVM   (2009-12-03 01:07:00) [5]


> Как это можно сделать?

bind?


Сергей М.   (2009-12-02 22:27:00) [6]

И что же это за "специфика", позволь полюбопытствовать ?
За каким лешим потребовалось указывать порт отправителя на прикладном уровне, если он и так уже фигурирует на транспортном уровне ?


Наверх

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