MakeIPAddressFromString()
Posted: Thu Jul 28, 2016 9:00 am
Hi,
since it was needed:
Maybe it is not complete and I did no error checks.
Bernd
since it was needed:
Code: Select all
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=66279&p=492103
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
Procedure.i MakeIPAddressFromString(String$)
Protected.i Result, Dot, Colon, Count
Protected Rev$, IPv4$, Replace$
If FindString(String$, ".")
Dot = #True
EndIf
If FindString(String$, ":")
Colon = #True
EndIf
If Dot And Not Colon
Result = MakeIPAddress(Val(StringField(String$, 1, ".")), Val(StringField(String$, 2, ".")), Val(StringField(String$, 3, ".")), Val(StringField(String$, 4, ".")))
Else
If Dot
Rev$ = ReverseString(String$)
IPv4$ = ReverseString(Left(Rev$, FindString(Rev$, ":") - 1))
String$ = RemoveString(String$, IPv4$)
String$ + LTrim(Hex(Val(StringField(IPv4$, 1, "."))) + RSet(Hex(Val(StringField(IPv4$, 2, "."))), 2, "0"), "0") + ":"
String$ + LTrim(Hex(Val(StringField(IPv4$, 3, "."))) + RSet(Hex(Val(StringField(IPv4$, 4, "."))), 2, "0"), "0")
EndIf
Count = CountString(String$, ":")
If Count < 7
Count = 8 - Count
While Count
Replace$ + ":0"
Count - 1
Wend
Replace$ + ":"
String$ = ReplaceString(String$, "::", Replace$)
If Left(String$, 1) = ":"
String$ = "0" + String$
EndIf
EndIf
Result = MakeIPAddress(Val("$" + StringField(String$, 1, ":")), Val("$" + StringField(String$, 2, ":")), Val("$" + StringField(String$, 3, ":")), Val("$" + StringField(String$, 4, ":")), Val("$" + StringField(String$, 5, ":")), Val("$" + StringField(String$, 6, ":")), Val("$" + StringField(String$, 7, ":")), Val("$" + StringField(String$, 8, ":")))
EndIf
ProcedureReturn Result
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Define IP.i
InitNetwork()
IP = MakeIPAddressFromString("127.0.0.1")
Debug IPString(IP, #PB_Network_IPv4)
IP = MakeIPAddressFromString("fe80::4910:6451:3c95:5533")
Debug IPString(IP, #PB_Network_IPv6)
FreeIP(IP)
IP = MakeIPAddressFromString("::ffff:7f00:1")
Debug IPString(IP, #PB_Network_IPv6)
FreeIP(IP)
IP = MakeIPAddressFromString("::ffff:127.0.0.1")
Debug IPString(IP, #PB_Network_IPv6)
FreeIP(IP)
CompilerEndIf
Bernd