Pour un projet, je dois modifier un player video pour qu'il supporte IPv6.
Je cherche à convertir une adresse IPv6 sous forme de char[] en une adresse compréhensible par le système. La fonction inet_pton n'existant malheureusement pas sur l'API windows, la fonction WSAStringToAddress() semble faire à peu près la même chose. Néanmoins, lorsque j'exécute mon code, l'erreur 10022 "WSAEINVAL"....
Voici mon code (abrégé) :
Code :
- void main()
- {
- struct sockaddr_in6 addr_6;
- int addr_6_size = sizeof(addr_6);
- if (AddressTypeIPV6 == variable->addressType) //Si l'adresse contenue dans le fichier est une adresse IPv6...
- {
- WSAStringToAddress(variable->addressStr, AF_INET6, NULL, (struct sockaddr_in*)&addr_6, &addr_6_size);
- printf("Erreur: %d\n", WSAGetLastError());
- }
- }
|
Pour info adressStr est un char[128].
En debug, quand je trace la variable addr_6, je n'ai rien de correct dans la structure :
Code :
- sin_family 0xcccc short
- S_addr 0xcccccccc unsigned long
|
Je ne comprend pas pourquoi le champ S_addr de ma structure in6_addr de sockaddr_in6 est un long (32 bit) alors que ça semble trop petit pour contenir une adresse IPv6...mon cast serait-il incorrect?
Quelqu'un voit t-il pourquoi mon char n'est pas bien converti en addresse?
Merci d'avance!