Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

LWIP [UDP] - Jak pobrać adres nadawcy pakietu UDP.

mickpr 01 Jan 2013 20:46 1845 2
  • #1
    mickpr
    Level 39  
    Mam program w ze stosem LwIP 1.4.0 (+ FreeRTOS na LPC 1758/68 - ale to bez znaczenia).
    Pytanie moje brzmi:
    Jak mogę pobrać adres nadawcy pakietu UDP?

    Po moich poszukiwaniach znalazłem funkcję
    Code: c
    Log in, to see the code
    która jednak jako parametr 5 przyjmuje adres struktury (sockaddr), zamiast sockaddr_in. W związku z czym nie mogę skorzystać z tej funkcji w sposób taki:
    Code: c
    Log in, to see the code


    Dla przykładu podam obydwie struktury z pliku sockets.h (LwIP)



    Code: c
    Log in, to see the code


    Czy to wina kulawej implementacji tej funkcji?
    Czy z tego poziomu do adresu się nie dostanę i muszę zaimplementować swoją funkcje operującą na sockaddr_in ?

    Szukam jakiegoś innego sposobu na dotarcie do adresu nadawcy, który jest przecież wysyłany w każdym pakiecie UDP.
    Port już nie jest dla mnie tak istotny.
    Proszę o nakierowanie na właściwy sposób.

    Dla jasności powiem, że przejście w mojej aplikacji na pakiety TCP nie jest możliwe.
  • Helpful post
    #2
    nibbit
    Level 20  
    Robi to się tak:
    - najpierw init, w którym wskazujesz na port do nasłuchiwania i wskaźnik na funkcję która jest handlerem odebranej wiadomości:

    Code: c
    Log in, to see the code


    a funkcja na którą wskazujesz przy inicie musi mieć następującą postać:
    Code: c
    Log in, to see the code

    W zmiennej struct ip_addr *addr będziesz miał adres nadawcy.
  • #3
    mickpr
    Level 39  
    Dziękuję. Działa :)
    Dla potomności powiem - w handlerze (udp_msgrecv) można odczytac i adres i port
    Code: c
    Log in, to see the code