IPAddressGadget et IPv6

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

IPAddressGadget et IPv6

Message par Naheulf »

Bonsoir,

Est-ce que vous sauriez comment on fait pour utiliser des IPv6 avec le IPAddressGadget ?

J'ai essayé de rajouter #PB_Network_IPv6 (comme pour IPString())à la fin des paramètres de IPAddressGadget() mais le compilateur me jette en disant "nombre de parametres incorrect."

Et si je ne met pas ce paramètre supposé j'ai un comportement... inapproprié : le gadget IPAddressGadget me renvoie la même valeur que IPString(IP,#PB_Network_IPv4)... alors que je lui donne une IPv6.

Code : Tout sélectionner

If InitNetwork() And OpenWindow(0, 0, 0, 210, 50, "IPAddressGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
	IP = MakeIPAddress($0123, $4567, $89ab, $cdef, $fedc, $ba98, $7654, $3210) ; Crée une IPv6
	IPAddressGadget(0, 10, 15, 160, 20)
	SetGadgetState(0, IP)
	
	Message$ = "Lecture en IPv4 : "+IPString(IP,#PB_Network_IPv4) + #CRLF$
	Message$ + "Lecture en IPv6 : "+IPString(IP,#PB_Network_IPv6) + #CRLF$
	MessageRequester("", Message$)
	
	ShowMemoryViewer(IP, 16)
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Remarque : à chaque exécution la valeur "IPv4" change comme c'est c'était un pointeur vers la zone mémoire qui contient l'IPv6. Ce qui semble confirmé par la lecture de l'adresse correspondante dans le memory viewer.
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: IPAddressGadget et IPv6

Message par Naheulf »

Bon, je vais citer la réponse de Mesa que j'ai eu dans [AIDE PUREBASIC] Mises à jour.
Mesa a écrit :Apparement le gadget ipaddress ne prend pas en charge l'ipv6, ça sera noté dans l'aide.

En attendant, vous pouvez créez votre prope gadget avec le canvas...

Une petite procedure:

Code : Tout sélectionner

Procedure.s IPStringV6(IP)
  Protected tmp$
  For i=0 To 15 Step 2
    tmp$=tmp$+RSet(Hex(PeekB(IP+i),#PB_Byte),2,"0")+
         RSet(Hex(PeekB(IP+i+1),#PB_Byte),2,"0")+":"
  Next i
  ProcedureReturn Mid(tmp$,1,Len(tmp$)-1)  
EndProcedure

IP = MakeIPAddress($0123, $4567, $89ab, $cdef, $fedc, $ba98, $7654, $3210) ; Crée une IPv6 
Debug IPStringV6(IP)
M.
Du coup j'ai fait la demande d'ajout de fonctionnalité sur le fofo anglais : Add IPv6 support to IPAddressGadget()
Répondre