Seite 2 von 2

Re: Computer und Port bereit ?

Verfasst: 12.03.2011 10:34
von mk-soft
Ping geht nicht mit mit PB 64bit?. Mit PB 32bit auf Win7 X64 geht...

Re: Computer und Port bereit ?

Verfasst: 12.03.2011 13:33
von Bisonte
Ok ... nach ewig langem rumprobieren hab ich dann rausgefunden, dass meine Firewall schuld war :oops:

Also PB x86 und Win7 x64 geht doch :oops:

Vielen Dank für die Mühen die ich gemacht hab ... ;)

Re: Computer und Port bereit ?

Verfasst: 12.03.2011 21:49
von Elektrolurch
Hi

ich habe es gerade mal auch mit PB64 probiert und kriege tatsächlich keine Ergebnisse.
Alles scheint zu funktionieren, lediglich die Windowsfunktion scheint unter x64 nicht zu funktionieren.

Code: Alles auswählen

 If IcmpSendEcho_(lngHPort, lngDAddress, @strMessage, MsgLen, #Null, *buffer, SizeOf(ICMP_ECHO_REPLY) + MsgLen, #PING_TIMEOUT)
BYe André

Re: Computer und Port bereit ?

Verfasst: 12.03.2011 22:27
von HeX0R
Die funktioniert schon, sie erwartet nur etwas mehr Speicher:

Code: Alles auswählen

Procedure Ping(IP.s, TimeOUT, *Result.INTEGER = #Null)
	Protected lngHPort, strMessage.s, MsgLen, lngDAddress
	Protected *ECHO.ICMP_ECHO_REPLY, Result

	lngHPort = IcmpCreateFile_()
	If lngHPort <> #INVALID_HANDLE_VALUE
		strMessage  = "Echo This Message back to me"
		MsgLen      = StringByteLength(strMessage)
		*ECHO       = AllocateMemory(SizeOf(ICMP_ECHO_REPLY) + MsgLen + 16)
		lngDAddress = MakeIPAddress(Val(StringField(IP.s, 1, ".")), Val(StringField(IP.s, 2, ".")), Val(StringField(IP.s, 3, ".")), Val(StringField(IP.s, 4, ".")))
		Result      = -1

		If *ECHO
			If IcmpSendEcho_(lngHPort, lngDAddress, @strMessage, MsgLen, #Null, *ECHO, SizeOf(ICMP_ECHO_REPLY) + MsgLen + 16, TimeOUT)
				Result = *ECHO\RoundTripTime
				Debug PeekS(*ECHO\Data, *ECHO\DataSize)
			EndIf
			FreeMemory(*ECHO)
		EndIf
		IcmpCloseHandle_(lngHPort)
	EndIf

	If *Result
		*Result\i = Result
	EndIf
	ProcedureReturn Result
EndProcedure

Define.i i
If Ping("127.0.0.1", 1000, @i) = -1
	Debug "Error, no host found!"
Else
	Debug "Ping answer: " + Str(i) + "ms"
EndIf
Ausserdem hast du den Speicher und das Handle in deiner Version nicht mehr freigegeben.

Übrigens:
Elektrolurch hat geschrieben: Ich habe mittlerweile selbst einen kleinen Ping gebastelt.
Du weisst ja, dass man immer schön die Quellenangaben mitliefern sollte.

Re: Computer und Port bereit ?

Verfasst: 13.03.2011 11:48
von Elektrolurch
Danke HeXOR

natürlich hast du recht, aber ich hatte ja schon eingeräumt,dass ich "gegutenbergt" hatte.
Da ich mich allerdings erinnerte das ich den Ping schon einmal in einem Code benutzt habe, sucht ich ihn in alten Codes von mir, nur wußte ich nicht mehr woher er damals kam.
Ich hätte mir ja den Post komplett schenken können, dachte aber und denke immernoch man sollte ein Problem zu Ende diskutieren.
Also "mea culpa"

BYe André