Voici un testeur de ports pour routeur :
general.pb :
Code : Tout sélectionner
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
MessageRequester("AVERTISSEMENT !", "Il est recommander de n'ouvrir aucun programme utilisant Internet pendant les phases de test, et de laisser les programmes déjà démarrés dans l'été où ils sont. Merci.", #MB_ICONWARNING)
If Not InitNetwork()
MessageRequester("Erreur fatale.", "Impossible d'initialiser le réseau ! Le programme va se fermer.", #MB_ICONERROR)
End
EndIf
CreateImage(0, 256, 256)
StartDrawing(ImageOutput(0))
Box(0, 0, 256, 256, $FFFFFF)
StopDrawing()
IncludeFile "Common.pb"
Open_gui()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
Select GadgetID
Case #hy1
MessageRequester("Information :", "Ceci va démarrer votre navigateur web par défaut.", #MB_ICONINFORMATION)
RunProgram("http://localiser-ip.com")
Case #hy2
MessageRequester("A propos", "Développé par SoftAtom. Le site web n'est pas encore ouvert. Plus d'info à pertricot@yahoo.fr")
Case #tcp1
If CreateNetworkServer(0, Val(GetGadgetText(#port)), #PB_Network_TCP)
SetGadgetText(#diagS, "Le port spécifié est disponible en mode TCP")
CloseNetworkServer(0)
Else
SetGadgetText(#diagS, "Le port spécifié semble utilisé en mode TCP")
EndIf
Case #udp1
If CreateNetworkServer(0, Val(GetGadgetText(#port)), #PB_Network_UDP)
SetGadgetText(#diagS, "Le port spécifié est disponible en mode UDP")
CloseNetworkServer(0)
Else
SetGadgetText(#diagS, "Le port spécifié semble utilisé en mode UDP")
EndIf
Case #add
If Val(GetGadgetText(#portS)) <= Val(GetGadgetText(#portE))
If GetGadgetState(#udp2)
AddGadgetItem(#testList, -1, GetGadgetText(#portS)+"-"+GetGadgetText(#portE)+":UDP")
Else
AddGadgetItem(#testList, -1, GetGadgetText(#portS)+"-"+GetGadgetText(#portE)+":TCP")
EndIf
Else
MessageRequester("Erreur !", "Le port final doit être supérieur au port de début", #MB_ICONERROR)
EndIf
Case #rem
If GetGadgetState(#testList) >= 0
RemoveGadgetItem(#testList, GetGadgetState(#testList))
EndIf
Case #go1
For i = 0 To CountGadgetItems(#testList) - 1
t$ = GetGadgetItemText(#testList, i)
portS = Val(Left(t$, FindString(t$, "-", 1)-1))
portE = Val(Left(Mid(t$, FindString(t$, "-", 1)+1), Len(Mid(t$, FindString(t$, "-", 1)+1))-4))
If Right(t$, 3) = "TCP" : mode = #PB_Network_TCP : Else : mode = #PB_Network_UDP : EndIf
AddGadgetItem(#diagM, -1, t$+Chr(10)+"En phase de test...")
SetGadgetAttribute(#progress, #PB_ProgressBar_Maximum, portE-portS)
result$ = ""
For port = portS To portE
SetGadgetState(#progress, port-portS)
If Not CreateNetworkServer(0, port, mode)
result$ + Str(port) + ";"
Else
CloseNetworkServer(0)
EndIf
WindowEvent()
Next
If result$ = ""
result$ = "Tous les ports sont disponibles.."
EndIf
SetGadgetItemText(#diagM, CountGadgetItems(#diagM) - 1, Left(result$, Len(result$)-1), 1)
Next
Case #test2
x = 0
y = 0
CreateImage(1, 256, 256)
For i = 0 To 65536
color = 0
If Not CreateNetworkServer(0, i, #PB_Network_TCP)
color = $FF
tcp$ = "Utilisé"
Else
CloseNetworkServer(0)
tcp$ = "Libre"
EndIf
If Not CreateNetworkServer(0, i, #PB_Network_UDP)
If color = $FF : color = $FFFFFF : Else : color = $FF8800 : EndIf
udp$ = "Utilisé"
Else
CloseNetworkServer(0)
udp$ = "Libre"
EndIf
WindowEvent()
StartDrawing(ImageOutput(1))
DrawImage(ImageID(0), 0, 0)
Plot(x, y, color)
StopDrawing()
StartDrawing(ImageOutput(0))
DrawImage(ImageID(1), 0, 0)
StopDrawing()
SetGadgetState(#progressIMG, ImageID(1))
x + 1
If x = 256 : x = 0 : y + 1 : EndIf
If tcp$ = "Utilisé" Or udp$ = "Utilisé"
id = CreateImage(#PB_Any, 16, 16)
StartDrawing(ImageOutput(id))
Box(0, 0, 16, 16, 0)
Box(1, 1, 14, 14, color)
StopDrawing()
AddGadgetItem(#diagE, -1, Str(i)+Chr(10)+tcp$+Chr(10)+udp$, ImageID(id))
EndIf
Next
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Code : Tout sélectionner
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
Enumeration
#gui
EndEnumeration
;- Gadget Constants
;
Enumeration
#panel
#hy1
#hy2
#Text_0
#port
#tcp1
#udp1
#diagS
#testList
#Text_2
#portS
#Text_3
#portE
#tcp2
#udp2
#add
#rem
#progress
#go1
#diagM
#progressIMG
#test2
#diagE
EndEnumeration
;- StatusBar Constants
;
Enumeration
#status
EndEnumeration
;- Image Plugins
Procedure Open_gui()
If OpenWindow(#gui, 442, 93, 340, 400, "Port Tester", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(#gui))
HyperLinkGadget(#hy1, 0, 370, 170, 20, "Connaître mon IP", RGB(0, 0, 0))
HyperLinkGadget(#hy2, 170, 370, 170, 20, "A propos...", RGB(0, 0, 0))
;-
PanelGadget(#panel, 0, 0, 340, 370)
AddGadgetItem(#panel, -1, "Diagnostic simple")
TextGadget(#Text_0, 8, 8, 90, 20, "Numéro du port :")
StringGadget(#port, 108, 8, 220, 20, "", #PB_String_Numeric)
ButtonGadget(#tcp1, 8, 38, 140, 30, "Test TCP")
ButtonGadget(#udp1, 188, 38, 140, 30, "Test UDP")
TextGadget(#diagS, 8, 78, 320, 50, "Tests non effectués.", #PB_Text_Border)
AddGadgetItem(#panel, -1, "Diagnostic manuel")
ListViewGadget(#testList, 8, 8, 110, 70)
TextGadget(#Text_2, 128, 8, 130, 20, "Numéro du port de début :")
StringGadget(#portS, 258, 8, 70, 20, "", #PB_String_Numeric)
TextGadget(#Text_3, 128, 38, 130, 20, "Numéro du port de fin :")
StringGadget(#portE, 258, 38, 70, 20, "", #PB_String_Numeric)
OptionGadget(#tcp2, 128, 68, 70, 20, "Test TCP")
OptionGadget(#udp2, 128, 88, 70, 20, "Test UDP")
ButtonGadget(#add, 228, 68, 100, 40, "Ajouter")
ButtonGadget(#rem, 8, 78, 110, 30, "Retirer")
ProgressBarGadget(#progress, 8, 148, 320, 20, 0, 0)
ButtonGadget(#go1, 8, 118, 320, 30, "Lancer le test")
;-
ListIconGadget(#diagM, 8, 178, 320, 160, "Test effectué", 100)
AddGadgetColumn(#diagM, 1, "Ports utilisés", 216)
AddGadgetItem(#panel, -1, "Diagnostic complet")
ImageGadget(#progressIMG, 8, 78, 260, 260, ImageID(0), #PB_Image_Border)
ButtonGadget(#test2, 288, 78, 40, 260, "Test", #PB_Button_MultiLine)
;-
ListIconGadget(#diagE, 8, 8, 320, 60, "Port", 100)
AddGadgetColumn(#diagE, 1, "Résultat TCP", 100)
AddGadgetColumn(#diagE, 2, "Résultat UDP", 100)
CloseGadgetList()
EndIf
EndIf
EndProcedure
Bons tests !
KrisJNT