Zum Inhalt springen

winsock in VB.NET


Sunflower84

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen


 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...