Procházet zdrojové kódy

Enet expects IP in different byte order.

woollybah před 8 roky
rodič
revize
a0ba213d09
2 změnil soubory, kde provedl 15 přidání a 3 odebrání
  1. 1 3
      gnet.mod/gnet.bmx
  2. 14 0
      socket.mod/socket.bmx

+ 1 - 3
gnet.mod/gnet.bmx

@@ -828,9 +828,7 @@ A GNet host must be listening (see #GNetListen) at the specified address and por
 connection to succeed.
 End Rem
 Function GNetConnect( host:TGNetHost,address$,port,timeout_ms=10000 )
-	Local ip:Int
-	InetPton(AF_INET_, address, Varptr ip)
-	Return host.Connect( ip,port,timeout_ms )
+	Return host.Connect( DottedIPToInt(HostIp(address, AF_INET_)),port,timeout_ms )
 End Function
 
 Rem

+ 14 - 0
socket.mod/socket.bmx

@@ -312,6 +312,20 @@ Function DottedIP$( ip:Int )
 	Return (ip Shr 24)+"."+(ip Shr 16 & 255)+"."+(ip Shr 8 & 255 )+"."+(ip & 255)
 End Function
 
+Rem
+bbdoc: Converts a dotted IPv4 string to an ip address.
+returns: An integer version of an ip address.
+End Rem
+Function DottedIPToInt:Int(addr:String)
+	Local parts:String[] = addr.Split(".")
+	Local num:Long
+	For Local i:Int = 0 Until parts.length
+		Local power:Int = 3 - i
+		num :+ (parts[i].ToInt() Mod 256) * (256 ^ power)
+	Next
+	Return num
+End Function
+
 Rem
 bbdoc: Converts an IP address string into a binary representation.
 about: For AF_INET_, @dst should be an Int or 32-bit (4 bytes) in size.