Methode wird abgebrochen

sunflower84

Erfahrenes Mitglied
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:
Code:
 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?

Das ganze wird mit VB.NET programmiert.

Lg
Sunflower84
 
Nur zur Info: Hast du Winsock eingebunden? Wenn ja, dann müsste ich dieses Verhalten erst testen.

Unter .NET würde ich hier auch TcpClient und TcpListener empfehlen.
 
Ja, ich habe das Winsock natürlich mit eingebunden. Sonst würde er mir den ersten Timerwert erst garnicht anzeigen. Denn eine Verbindung habe ich ja zu dem Client. Aber warum gibt er mir die MessageBox nicht aus wenn ich eine nach socket(0) rein mache? Das ist doch total unlogisch.
Das mit dem TCPListener habe ich auch schon gelesen. Aber so sollte es doch auch gehen. Unter VB6 hat das alles so geklappt.

Lg
Sunflower84
 
Das komische ist, wenn ich das so mache:
Code:
Private Sub socket_DataArrival(ByVal bytesTotal As Integer)
        Label7.Text = bytesTotal.ToString
        socket(0).GetData(Label8.Text)
        socket(1).GetData(Label9.Text)


    End Sub

dann funktioniert das nur mit Label8. Wenn ich in Label9 den Timerwert haben will funktioniert das nicht.
Hat jemand eine Idee woran das liegen könnte?
Das socket habe ich so deklariert:
Dim socket(30) As MSWinsockLib.Winsock

Lg
Sunflower84
 
Zuletzt bearbeitet:
Hi!

Wenn die Methode abbrechen würde, dann müsste eine Exception dafür verantwortlich sein. Das Du aber anscheinend keine Exception bekommst, kann es nur daran liegen, dass die Methode den aktuellen Thread blockt. Also die Methode darauf wartet, bis etwas empfangen werden konnte. Kann also sein, dass nichts gesendet wird.

Btw. warum empfängst eigentlich die Daten direkt aus dem Socket ohne vorher zu prüfen, ob Daten gerade ankommen? Hast Dir mal Gedanken über ein simples Frage-Antwort-Protokoll gemacht?

Schau Dir mal folgenden Post an:
[post=1378340]AW: [VB .Net 2005] Anzahl der Verbindungen begrenzen bei TcpClient und/oder Socket - Post[/post]
Dort findest auch Möglichkeiten, wie man das Ganze auch asynchron implementieren kann...
 

Neue Beiträge

Zurück