VB6: Winsock - Fehlerbehandlung bei nicht existierendem Host

Tensi

Mitglied
Hallo!

Habe ein Problem mit Winsock (UDP). Ich möchte an mehrere Rechner, deren Netzwerknamen in einer Liste stehen, Daten senden. Dabei weiß ich aber vorher nicht, welcher der Rechner wirklich gerade eingeschaltet ist.
Beim Senden der Daten bekomme ich logischerweise dann eine Fehlermeldung, wenn der Rechner offline ist. Bisher ist es mir nicht gelungen diesen Fehler abzufangen! Hab schon alles versucht (winsock.state..., on error goto ...)

Code:
For I = 0 To lstNames.ListCount - 1 Step 1
          If lstNames.Selected(I) Then
                        Winsock.RemoteHost = lstNamen.List(I)
                        Winsock.SendData txtOut.Text
          End If
Next I

Gibt es eine Möglichkeit vor dem Senden festzustellen, ob der Rechner erreichbar ist, oder nach dem Senden den Fehler abzufangen?

Vielen Dank!
 
Ich nehme mal an, dass der Fehler immer in dieser Zeile auftritt, wenn der Pc nicht online ist: Winsock.SendData txtOut.Text

Die einfachste Lösung wäre die hier, da werden alle Fehler einfach ignoriert:

Code:
On Error Resume Next
For I = 0 To lstNames.ListCount - 1 Step 1
          If lstNames.Selected(I) Then
                        Winsock.RemoteHost = lstNamen.List(I)
                        Winsock.SendData txtOut.Text
          End If
Next I

Das kann man aber auch ganz einfach mit einer Fehlerbehandlung abfangen:
(Da ich die genaue Fehlernummer nicht weiß habe ich jetzt einfach 12345 genommen, das musst du natürlich noch anpassen)
Code:
On Error Goto Fehlerbehandlung

For I = 0 To lstNames.ListCount - 1 Step 1
          If lstNames.Selected(I) Then
                        Winsock.RemoteHost = lstNamen.List(I)


                        On Error Resume Next
                        Winsock.SendData txtOut.Text
                        If Err.Number=12345 then
                               '-->Pc ist offline!
                               Err.Clear
                        end if

                        On Error Goto Fehlerbehandlung
          End If
Next I

Exit Sub
'----------------------------------------------------------------
Fehlerbehandlung:
       MsgBox "Fehler " & Err.Number & "! " & Err.Description
       Resume Next
 
Zuletzt bearbeitet:
Zurück