Re: Micropython, sockets, multicast, et recvfrom()

Top Page

Reply to this message
Author: Frédéric
Date:  
To: Guilde
Subject: Re: Micropython, sockets, multicast, et recvfrom()
Le dimanche 04 août 2024, Edgar a écrit :

> Sous Unix, l'adresse à laquelle est connecté un socket est représentée
> par cette structure (c.f. bind(2)):
>
>     struct sockaddr {
>         sa_family_t sa_family;
>         char        sa_data[14];
>     }

>
> En pratique, celle-ci est utilisée comme une `union` de différents types
> qui correspondent à plusieurs familles d'adresses. Pour IPv4, la
> structure utilisée est (c.f. ip(7)):
>
>     struct sockaddr_in {
>         sa_family_t    sin_family; /* address family: AF_INET */
>         in_port_t      sin_port;   /* port in network byte order */
>         struct in_addr sin_addr;   /* internet address */
>     };

>
> De ce que je comprends, ton Micropython te montre la structure sockaddr
> à l'état brut :
>
>   – Les deux premiers octets contiennent le champ sa_family, qui vaut
>     AF_INET (c.-à-d. 2).

>
>   – Les derniers octets sont du padding pour tomber sur la taille de
>     `struct sockaddr`, qui est plus grand que `struct sockaddr_in` à
>     cause d'autres familles d'adresses qui ont besoin de plus de place.


Ok, vu ! Grand merci pour ces informations détaillées :o)

Je vais voir avec les devs de Micropython pourquoi ils balancent la
structure brute, plutôt que d'en faire un object Python...

À plus,

-- 
    Frédéric