Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LwIP: UDP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
k000858
Поднял UDP сервер, отвечаю на входящие запросы.
Проблема вот в чем: открыл 1200 порт, поступают запросы с локального 1200 а удаленного **** порта, сервер должен был ответить с 1200 локального на **** удаленный порт, а в действительности отвечает с 1200 на 1200 порт.

Что я делаю ни так?

открыл порт
Код
    upcb = udp_new();    // Create a new UDP control block

    if (upcb)
    {
        // Bind the upcb to the UDP_PORT port
        // Using IP_ADDR_ANY allow the upcb to be used by any local interface
        err = udp_bind(upcb, IP_ADDR_ANY, 1200);

        if(err == ERR_OK)
        {
            udp_recv(upcb, udp_receive_callback, NULL);    // Set a receive callback for the upcb
        }
    }


отвечаю udp_send(upcb, ans); // Send data
либо udp_sendto(upcb, ans, &upcb->remote_ip, upcb->local_port); // Send data

в отладке вывожу upcb->local_port и upcb->remote_port которые оба якобы 1200, но в действительности это ни так - видно сниффером сети
scifi
Если что, у меня вот так:
Код
...
{
    udp_bind(upcb, IP_ADDR_ANY, listen_port);
    udp_recv(upcb, recv, 0);
}

void recv(void *arg, struct udp_pcb *upcb, struct pbuf *p_arg, struct ip_addr *addr, u16_t port)
{
...
    udp_sendto(upcb, psend, addr, port);
}
k000858
хм. ваш вариант подошел
именно в переменной-аргументе port содержался нужный номер порта
интересно, почему и в upcb->local_port и upcb->remote_port содержится один и тот же локальный порт, который открывает UDP сервер.
в общем заработало, спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.