- Offizieller Beitrag
Hallo an alle,
Ich benutzte gerade diese UDF um eine Art WireShark aufzubauen (dafür da, um die Kommunikation von Client und Server auf Fehlern zu überprüfen).
http://opensource.grisambre.net/pcapau3/
Dies klappt soweit auch ganz gut, leider bekomme ich es nicht mit CallBack hin. Mit _PcapDispatchToFunc bekomme ich einfach keine Packete zurück und mit einer Funktion die ich im Internet gefunden habe (_PcapLoopToFunc) reagiert mein Programm gar nicht mehr, er zeigt zwar die Pakete an, aber dafür reagiert das restliche Script nicht.
Über Anregungen und Hilfen wäre ich sehr dankbar, da ich mich mit WinPCAP leider nur sporadisch auskenne.
Spoiler anzeigen
#include <Winpcap.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("Reagiert nicht bei Loop")
GUICtrlCreateLabel("Reagiert nicht bei Loop, bei Dispatch tut das Script gar nichts.",0,0,400,400)
GUICtrlSetFont(-1,16)
GUISetState()
$winpcap = _PcapSetup()
$pcap_devices = _PcapGetDeviceList()
$pcap = _PcapStartCapture($pcap_devices[0][0], '')
$int = _PcapLoopToFunc($pcap, "PacketeAnzeigen");<-- führt zu nicht reagieren der GUI
;~ $int = _PcapDispatchToFunc($pcap, "PacketeAnzeigen");<-- tut nichts
OnAutoItExitRegister("onautexit")
[/autoit] [autoit][/autoit] [autoit]Func PacketeAnzeigen($packet)
ConsoleWrite(Hex($packet[3]) & ",")
EndFunc ;==>PacketeAnzeigen
While GUIGetMsg() <> -3
Sleep(100)
ConsoleWrite(@HOUR&":"&@MIN&":"&@SEC&"."&@MSEC& @LF);<-- wird nicht angezeigt
WEnd
Func onautexit()
_Pcap_breakloop($pcap)
_PcapStopCapture($pcap)
Exit
EndFunc ;==>onautexit
Func _PcapLoopToFunc($pcap,$func) ;(ist die _PcapDispatchToFunc funktion nur abgeändert)
If NOT IsPtr($pcap) Then return -1
Local $CallBack = DLLCallbackRegister ("_PcapHandler", "none:cdecl", "str;ptr;ptr")
If $CallBack=0 Then return -1
Local $r=DllCall($Pcap_dll, "int:cdecl", "pcap_loop", "ptr", $pcap, "int",-1, "ptr", DllCallbackGetPtr($CallBack), "str", $func)
if @error then return -1
DllCallbackFree ( $CallBack )
return $r[0]
EndFunc
Func _Pcap_breakloop($pcap)
DllCall($Pcap_dll, "none:cdecl", "pcap_breakloop", "ptr", $pcap)
EndFunc
Gruß,
Spider