Page 1 sur 1

IPAddressGadget et IPv6

Publié : mer. 27/mai/2020 22:21
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.

Re: IPAddressGadget et IPv6

Publié : sam. 30/mai/2020 18:16
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()