Seite 1 von 1

ReceiveNetworkData Problem

Verfasst: 01.12.2014 15:54
von _JON_
Hallo Leute,
ich bin neulich auf der suche einer Möglichkeit zum raus finden der öffentlichen IP auf etwas gestoßen.

your-public-ip-stun-protocol und wollt das mal in PB schreiben.
Allerdings hapert es schon bei ReceiveNetworkData :?

Code: Alles auswählen

Structure tSTUN
  Header.b[8]
  Header_ID.b[12]
  Type.b[2]
  Length.b[2]
  Attrib.b
  Family.b
  Port.b[2]
  IP.b[4]
EndStructure

Define iConnect, sServer.s, lPort.l, iLen
Define x
Define *bToSend, *bToRecv.tSTUN

*bToSend = AllocateMemory(20)
*bToRecv.tSTUN = AllocateMemory(1280)
PokeQ(*bToSend, $0001000000000000)


RandomData(*bToSend + 8, 12)

sServer = "stun.l.google.com"
lPort   = 19302
iLen    = 1280

InitNetwork()

iConnect = OpenNetworkConnection(sServer, lPort, #PB_Network_UDP)
If iConnect
  
  If SendNetworkData(iConnect, *bToSend, 20) = 20
    
    For x = 1 To 3
      Debug ReceiveNetworkData(iConnect, *bToRecv, 20)
      Delay(10)
    Next
  EndIf
  CloseNetworkConnection(iConnect)

EndIf


Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 16:18
von Kiffi
Hallo _JON_,

geht es Dir jetzt um das Ermitteln der IP oder um das Problem mit ReceiveNetworkData()?

Falls ersteres: Da gibt es einfachere Methoden. Beispielsweise mit einem simplen PHP-Script in Verbindung mit ReceiveHTTPFile():

PB:

Code: Alles auswählen

InitNetwork()
If ReceiveHTTPFile("http://tuebbentools.bplaced.net", GetTemporaryDirectory() + "ip.txt")
	If ReadFile(0, GetTemporaryDirectory() + "ip.txt")
		Debug "Deine IP: " + ReadString(0, #PB_File_IgnoreEOL)
		CloseFile(0)
		DeleteFile(GetTemporaryDirectory() + "ip.txt")
	Else
		Debug "!ReadFile()"
	EndIf
Else
	Debug "!ReceiveHTTPFile()"
EndIf
PHP (habe ich irgendwo geklaut):

Code: Alles auswählen

<?

function get_ip() { 
    $ip = "UNBEKANNT"; 
    if ($_SERVER["HTTP_CLIENT_IP"])  
        $ip = $_SERVER["HTTP_CLIENT_IP"]; 
    else if($_SERVER["HTTP_X_FORWARDED_FOR"])  
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
    else if($_SERVER["REMOTE_ADDR"])  
        $ip = $_SERVER["REMOTE_ADDR"]; 
    return $ip; 
}

echo get_ip();

?>
Grüße ... Peter

Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 16:23
von _JON_
Danke Peter,

aber ja Problem ist mehr das Ich nicht raffe warum ReceiveNetworkData keine Antwort gibt.

Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 17:05
von NicTheQuick
Vielleicht solltest du auch darauf warten, dass du ein Event bekommst, dass dir explizit sagt, dass Daten da sind, anstatt einfach drauf los zu empfangen. :wink:

Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 17:31
von _JON_
Naja, weder NetworkServerEvent() noch NetworkClientEvent() geben irgendein event zurück.

Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 18:07
von NicTheQuick
Na dann kommt wohl auch nichts zurück. :wink:

Re: ReceiveNetworkData Problem

Verfasst: 01.12.2014 22:29
von HeX0R
Wenn Du nur die öffentliche IP brauchst, reicht eigentlich dieser Einzeiler:

Code: Alles auswählen

Debug StringField(GetHTTPHeader("http://hex0rs.coderbu.de/Sonstiges/ShowMyIp12.php"), 2, Chr(34))
(o.k. InitNetwork() brauchst Du natürlich auch)