Ik zou graag controleren of een aantal pc's aangesloten zijn op het netwerk. Op de server zou ik een tool willen laten draaien die om de x tijd even een connectie probeert te maken met elke pc. Dit wil ik doen mbv het winsock control in VB6.
Indien ik gewoon een connectie maak met 1 pc krijg ik mooi antwoord indien de connectie in orde is, of winsock1_error indien de connectie niet in orde is. De gegevens (hostname & port) van de pc's die ik wil controleren staan in gebruikers.txt
Ik lees dit bestand nu regel per regel uit en doe telkens winsock1.connect met de gegevens uit 1 regel, tot het bestand volledig is doorlopen. Het probleem is echter dat eerst deze lus volledig wordt doorlopen (tot het einde van het bestand is bereikt), eer de code verder gaat naar winsock1_error of winsock1_connect. Dus ik zie enkel de status van de pc die als laatste is opgenomen in het txt bestand.
Ik gebruik volgende code:
De code die ik gebruik om slechts 1 pc te controleren:
Weet iemand hoe ik dit probleem kan oplossen? Na het inlezen winsock1.connect doen van 1 regel uit de lus moet er dus gewacht worden tot msgbox error of msgbox connect (later te vervangen door andere code).
Indien ik gewoon een connectie maak met 1 pc krijg ik mooi antwoord indien de connectie in orde is, of winsock1_error indien de connectie niet in orde is. De gegevens (hostname & port) van de pc's die ik wil controleren staan in gebruikers.txt
Ik lees dit bestand nu regel per regel uit en doe telkens winsock1.connect met de gegevens uit 1 regel, tot het bestand volledig is doorlopen. Het probleem is echter dat eerst deze lus volledig wordt doorlopen (tot het einde van het bestand is bereikt), eer de code verder gaat naar winsock1_error of winsock1_connect. Dus ik zie enkel de status van de pc die als laatste is opgenomen in het txt bestand.
Ik gebruik volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| Private Sub cmdControleerStatus_click()
Dim nFile As Integer
nFile = FreeFile
If Dir$(App.Path & "\gebruikers.txt") = "" Then Exit Sub 'uit de sub springen indien het bestand niet bestaat
Open App.Path & "\gebruikers.txt" For Input As #nFile 'bestand openen om te lezen
Dim host, port As String 'variabelen die de hostnaam & poortnr gaan bevatten
While Not EOF(nFile) 'blijven herhalen tot het volledige bestand is doorlopen
Input #nFile, host, port 'regel uit het betand uitlezen & in de variabelen plaatsen
Winsock1.Close 'connectie sluiten (mocht deze nog open staan om één of andere reden)
Winsock1.RemoteHost = host 'zeggen met welke host de connectie gemaakt moet worden
Winsock1.RemotePort = port 'zeggen met welke poort connecteren
Winsock1.Connect 'connectie maken
Wend
Close #nFile 'bestand afsluiten
End Sub
Private Sub Winsock1_Connect()
MsgBox "connectie is gemaakt" 'eenvoudige melding indien connectie ok is
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "error - geen connectie gemaakt" 'eenvoudige melding indien connectie niet ok is
End Sub |
De code die ik gebruik om slechts 1 pc te controleren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Private Sub cmdControleerStatus_click()
Winsock1.Close 'connectie sluiten (mocht deze nog open staan om één of andere reden)
Winsock1.RemoteHost = "pcnaam" 'zeggen met welke host de connectie gemaakt moet worden
Winsock1.RemotePort = "80" 'zeggen met welke poort connecteren
Winsock1.Connect 'connectie maken
End Sub
Private Sub Winsock1_Connect()
MsgBox "connectie is gemaakt" 'eenvoudige melding indien connectie ok is
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "error - geen connectie gemaakt" 'eenvoudige melding indien connectie niet ok is
End Sub |
Weet iemand hoe ik dit probleem kan oplossen? Na het inlezen winsock1.connect doen van 1 regel uit de lus moet er dus gewacht worden tot msgbox error of msgbox connect (later te vervangen door andere code).