Конференция "Сети" » Сокеты Windows - порт отправителя [D7, WinXP]
 
  • Michael (02.12.09 16:31) [0]
    Доброго времени суток!
    Для передачи данных по протоколу UDP использую стандартные сокеты Windows. Столкнулся со следующей проблемой - в связи со спецификой работы оборудования на другом конце, мне необходимо указывать явно порт отправителя; иначе он получается "плавающим". Как это можно сделать? Спасибо.
  • Сергей М. © (02.12.09 22:27) [1]
    И что же это за "специфика", позволь полюбопытствовать ?
    За каким лешим потребовалось указывать порт отправителя на прикладном уровне, если он и так уже фигурирует на транспортном уровне ?
  • DVM © (03.12.09 01:07) [2]

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

    bind?
  • Michael (03.12.09 08:38) [3]

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

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


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

    Я так понимаю, что bind осуществляет связывание сокета с локальным адресом для приема данных.
  • Anatoly Podgoretsky © (03.12.09 09:01) [4]
    При UDP соединение не устанавливается, поэтому бессмысленно говорить о порте с которого послано, тем более пытать дважды открыть порт, будет просто ошибка.
  • DVM © (03.12.09 11:25) [5]

    > 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];
    };
  • Сергей М. © (03.12.09 12:02) [6]

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


    На том же самом, с которого ты отправил оборудованию дейтаграмму.
    Ты сокет-то не закрывай после отправки - с какого сокета отравлял, тот и примет ответ
 
Конференция "Сети" » Сокеты Windows - порт отправителя [D7, WinXP]
Есть новые Нет новых   [134437   +30][b:0][p:0]