Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

winsock in VB.NET

Empfohlene Antworten

Veröffentlicht

Hallo

Ich habe eine Clientsoftware die einen Countdown beinhaltet. Des weiteren habe ich eine Serversoftware die unter anderem den aktuellen Wert des Countdowns der Clientsoftware in einem Label anzeigen soll.

Ich habe hier eine Methode die mir den aktuellen Timerwert anzeigen soll:


 Private Sub socket_DataArrival(ByVal bytesTotal As Integer)

        Label7.Text = bytesTotal.ToString

        socket(0).GetData(Label8.Text)



    End Sub

Ich bekomme hier auch den aktuellen Wert in das Label8 rein geschrieben. Doch wenn ich dann folgendes noch hinzufüge:

socket(1).GetData(Label9.Text)

um den aktuellen Wert eines anderen Clients zu sehen bekomme ich den Status 9 also Fehler.

Wenn ich zwischen socket(0) und socket(1) eine MessageBox ausgeben will erscheint die auch nicht. Was für mich heisst, dass er die Methode nach socket(0) abbricht. Aber warum? Hat da jemand eine Idee?

Lg

Sunflower84


 Private Sub socket_DataArrival(ByVal bytesTotal As Integer)

        Label7.Text = bytesTotal.ToString

        socket(0).GetData(Label8.Text)



    End Sub

Aber warum? Hat da jemand eine Idee?

Lg

Sunflower84

Hi Sunflower84,

... hübsches Bild übrigens ... :D

Pack doch obige Routine mal in nen Try Catch Block, und lass dir im Catch-Teil per Messagebox die Exception ausgeben.

Wenn ich das mach bekomme ich folgende Fehlermeldung:

Ausnahme von HRESULT:0x800A9C46

Kann das sein das ich versuche Daten zu senden und gleichzeitig zu empfangen?

Lg

Sunflower84

Wenn ich das mach bekomme ich folgende Fehlermeldung:

Ausnahme von HRESULT:0x800A9C46

Kann das sein das ich versuche Daten zu senden und gleichzeitig zu empfangen?

Lg

Sunflower84

Setz dort mal statt der Messagebox nen Haltepunkt rein und schau dir an dieser Stelle mal die gesamte Exception an; das sieht aus wie nur ein Teil der Fehlermeldung.

Kannst du mal bisschen mehr Programmcode rausrücken?

Zumindest das, wo du die beiden Sockets erzeugst.

Wieso Senden und empfangen??? Wo sendest du denn was?

Hier noch der Code wo es um das Winsock geht:

Deklariert habe ich das socket so:

Dim socket(30) As MSWinsockLib.Winsock


 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim data As String

        Dim i As Integer

        For i = 0 To 29

            With socket(i)

                         lblclientstatusarray(i).Text = WinsockStatetoString(i)




            End With

        Next


    End Sub


    Private Function WinsockStatetoString(ByVal index As Integer)

        Dim status As String


        Select Case (socket(index).State)

            Case 0 : status = "Verbindung geschlossen"

            Case 1 : status = "Verbindung geöffnet"

            Case 2 : status = "Empfangsbereit"

            Case 3 : status = "Verbindung wird aufgebaut"

            Case 6 : status = "Verbindung wird hergestellt"

            Case 7 : status = Receive_Data(index) '"Verbindung erfolgreich" 

            Case 8 : status = "Verbindung getrennt"

            Case 9 : status = "Fehler"

        End Select


        Return status

    End Function

Ich hoffe du kannst damit was anfangen.

Lg

Sunflower84

Aber du musst doch den Sockets auch irgendwas zuweisen... also IP und Port.

Wo und wie machst du denn das? Hat jedes Socket einen anderen Port?

Und wenn du nur 1 Socket nimmst geht es fehlerfrei?

Wie ist das Timer-Intervall gewählt?? Könnte sein, dass der Timer schneller ist als die 30 Aufrufe und sich somit was überschneidet.

ich mach das alles über einen Port.

Hier 2 Methode meines Clients


Private Sub Open_Communication()

        With socket

            .Close()

            .LocalPort = 11000

            AddHandler .ConnectionRequest, AddressOf Socket_ConnectionRequest

            AddHandler .DataArrival, AddressOf Socket_DataArrival

            .Listen()

        End With

    End Sub


Private Sub Socket_ConnectionRequest(ByVal requestID As Integer)

        'MessageBox.Show("test")

        'Winsock wird geschlossen da es noch

        'auf verbindungen wartet

        socket.Close()


        'Eine Verbindung wird akzeptiert

        socket.Accept(requestID)


    End Sub

Lg

Sunflower84

Hat sich erledigt. Trotzdem Danke

Lg

Sunflower84

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.