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