Ping (IcmpSendEcho) - Invalid memory access
Posted: Tue Jan 05, 2016 10:56 am
Hello friends and excuse me for my bad english!
I want ping many times a list of IP adresses. Show me where is my mistake please.
I want ping many times a list of IP adresses. Show me where is my mistake please.
Code: Select all
;Ping IP address #ip+"1" #ip+"2" #ip+"3" #ip+"4" ...
#ip="94.156.68."
Structure EchoResult
Reply.ICMP_ECHO_REPLY
Buffer.l[65000]
EndStructure
Procedure Ping(Address$, Timeout,m_size)
hPort = IcmpCreateFile_()
*mem=AllocateMemory(m_size)
RandomData(*mem,m_size)
Result = IcmpSendEcho_(hPort, inet_addr_(@Address$), *mem, m_size, 0, @ECHO.EchoResult, SizeOf(EchoResult), Timeout)
FreeMemory(*mem)
Risposta=ECHO\Reply\Status
IcmpCloseHandle_(hPort)
If Result = 0
ClearStructure(ECHO,EchoResult)
ProcedureReturn 2
Else
If Risposta=0 ; SUCCES
ClearStructure(ECHO,EchoResult)
ProcedureReturn 1
Else
ClearStructure(ECHO,EchoResult)
ProcedureReturn 2
EndIf
EndIf
EndProcedure
Structure png
ip.s
id.i
result.b
EndStructure
Global Dim png.png(250)
Procedure s_ping(num)
png(num)\result=2
Repeat
If png(num)\result=0
png(num)\result=ping(png(num)\ip,1000,65)
Else
Delay(50)
EndIf
Until quit=1
EndProcedure
max_png=250
For i=1 To max_png
png(i)\id=CreateThread(@s_ping(),i)
png(i)\ip=#ip+Str(i)
Next
OpenConsole()
EnableGraphicalConsole(1)
PrintN("BEGIN...")
Repeat
ms=ElapsedMilliseconds()
For i=1 To max_png
png(i)\result=0
Next
Repeat
ok=0
For i=1 To max_png
If png(i)\result=0
ok=1
Break
EndIf
Next
Delay(10)
Until ok=0
ClearConsole()
online=0
For i=1 To max_png
If png(i)\result=1
online+1
EndIf
Next
PrintN("online: "+Str(online)+" time:"+Str(ElapsedMilliseconds()-ms)+"ms")
For i=1 To max_png
png(i)\result=0
Next
Delay(10)
Until quit=1