Обмен По Udp Через Маршрутизатор

Тема в разделе "Общие вопросы по С и С++", создана пользователем YuryD, 9 сен 2014.

  1. YuryD

    YuryD New Member

    Регистрация:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте.
    Пишу UDP терминал для обмена пакетами с удаленным терминалом. Всё хорошо работает, пока оба терминала в одной подсети. Когда же один из терминалов запускают в другой подсети, т.е. через маршрутизатор, обмена нет. Ниже приведен код инициализации UDP сокетов. Нигде не задается ни маска подсети, ни шлюз. Это правильно?

    sockfd1 = socket(AF_INET, SOCK_DGRAM, 0);
    sockfd2 = socket(AF_INET, SOCK_DGRAM, 0);

    ZeroMemory(&servaddr, sizeof(servaddr));
    ZeroMemory(&cliaddr, sizeof(cliaddr));
    cliaddr.sin_family = AF_INET;
    cliaddr.sin_addr.s_addr = inet_addr("192.168.1.254");
    cliaddr.sin_port = htons(6000);

    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(12345);
    bind(sockfd1, (struct sockaddr *)&servaddr, sizeof(servaddr));

    FD_ZERO(&fds);
    FD_SET(sockfd1, &fds);

    ReceiveTimeout.tv_sec = 0;
    ReceiveTimeout.tv_usec = 5000000; // 5 s

    sendto(sockfd2, req, strlen(req), 0, (struct sockaddr *)&cliaddr,sizeof(cliaddr));

    iRC = select(sockfd1+1, &fds, NULL, NULL, &ReceiveTimeout);

    if (iRC)
    {
    n = recv(sockfd1, recvstr, 100, 0);
    ///
    ...
    ///
    }

    Что надо дописать в код, чтобы оно работало через маршрутизатор?
    Спасибо.
     
  2. wowchock

    wowchock New Member

    Регистрация:
    28 янв 2011
    Сообщения:
    3
    Симпатии:
    0
    А пинг проходит?
     
  3. YuryD

    YuryD New Member

    Регистрация:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    Да, пинги проходят
     
  4. wowchock

    wowchock New Member

    Регистрация:
    28 янв 2011
    Сообщения:
    3
    Симпатии:
    0
    Может на маршрутизаторе access-list не пропускает данный вид трафика?
     
  5. Astyxys

    Astyxys New Member

    Регистрация:
    13 июл 2010
    Сообщения:
    4
    Симпатии:
    0
  6. Valimor

    Valimor Well-Known Member

    Регистрация:
    10 апр 2010
    Сообщения:
    45
    Симпатии:
    0
    тоже скоро буду прогу под UDP протокол писать)
    нашел в чем ощибка?
     
  7. YuryD

    YuryD New Member

    Регистрация:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    На самом деле проблемы не существует. Доступ из подсути в подсеть - это вопрос настроек сетевого адаптера, а не сокетов. При правильной настройке сетевых соединений обмен через сокеты производится без ограничений на количество шлюзов и организацию подсетей. С точки зрения программиста есть IP и есть порты, а как данные попадут от одного IP к другому должны заботиться сисадмины при организации сети.
     
Загрузка...

Поделиться этой страницей