vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Winsock programmierung - Thread erforderlich 
Autor: supernicky
Datum: 08.05.11 22:03

Hallo zusammen,

ich komm mal gleich zur Sache.

Ich habe einen Chat geschrieben (Server und Client) in VB.Net.

Servercode
        Dim nachricht() As Byte
        server = New Socket(AddressFamily.InterNetwork, SocketType.Stream, _
          ProtocolType.IP)
        ip = computerinfo.AddressList(cboip.SelectedIndex)
        EP = New IPEndPoint(ip, CInt(txtport.Text))
        server.Bind(EP)                 
 
        Try
 
            server.Listen(1)
            client = server.Accept()
 
            nachricht = System.Text.Encoding.ASCII.GetBytes("Server sagt" & _
              "Hallo...")
            client.Send(nachricht)
            txtausgabe.Text = System.Text.Encoding.ASCII.GetString(nachricht)
            txtausgabe.Text += vbCrLf
 
            eingangsgroesse = client.Receive(eingang)
            txtausgabe.Text += System.Text.Encoding.ASCII.GetString(eingang, 0, _
              eingangsgroesse)
            txtausgabe.Text += vbCrLf
 
        Catch e As SocketException
            txtausgabe.Text += vbCrLf
            txtausgabe.Text += e.ToString
        End Try
Clientcode

server = New Socket(AddressFamily.InterNetwork, SocketType.Stream, _
  ProtocolType.IP)
        ip = computerinfo.AddressList(cboip.SelectedIndex)
        EP = New IPEndPoint(ip, CInt(txtport.Text))
 
 
        Try
 
            Dim nachricht As String = "Hallo Server, hier der Client"
            server.Connect(EP)
 
            eingangsgroesse = server.Receive(eingang)
            txtausgabe.Text += System.Text.Encoding.ASCII.GetString(eingang, 0, _
              eingangsgroesse)
            txtausgabe.Text += vbCrLf
 
 
            server.Send(Encoding.ASCII.GetBytes(nachricht))
            txtausgabe.Text += nachricht
            txtausgabe.Text += vbCrLf
 
            Catch e As SocketException
            txtausgabe.Text += vbCrLf
            txtausgabe.Text += e.ToString
        End Try
Also bis hier klappt alles. Der Server sendet eine Nachricht und der Client empfängt sie.
Dann einmal andersrum und Ende.

1. Problem:

Nun weiß ich aus meinem Buch daß das Socket alles blockiert (tut es auch ganz gut).
Jedenfalls sollte man Empfang und Senden in verschieden Threads packen, damit das eigentliche Programm weiter benutzt werden kann (klicken von Schaltflächen).
Habe ich auch irgendwie geschafft aber dann kommt das...

2. Problem:

ich kann aus dem ersten Thread nicht auf Steuerelemente zugreifen die im ersten Thread laufen.
Wohin schreibe ich dann die Nachrichten????



Das ist die Prozedur die im Thread ausgeführt wird.
Aber hier kann ich nicht auf das Steuerelement txtausgabe zugreifen...
Sub empfange_daten()
do while true
if server.connected = true then
 
            eingangsgroesse = server.Receive(eingang)
            txtausgabe.Text += System.Text.Encoding.ASCII.GetString(eingang, 0, _
              eingangsgroesse)
            txtausgabe.Text += vbCrLf
 
 
end if
end while
End Sub
Ich habe wirklich nicht viel Code erstellt... kann mir bitte jemand sagen wie ich das ordentlich realisieren kann ohne die Codemenge zu verdreifachen?

Mit Threads und dem Befehl Invoke kenn ich mich sehr schlecht aus..
Ich möchte mich wenn möglich auch nicht durch 200 Zeilen fremden Code lesen, der event. auch noch in Klassen unterteilt ist...

Bin am verzweifeln..

Gruß, Nicky
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Winsock programmierung - Thread erforderlich1.339supernicky08.05.11 22:03
Re: Winsock programmierung - Thread erforderlich1.048Manfred X09.05.11 09:30
Re: Winsock programmierung - Thread erforderlich791supernicky09.05.11 15:02
Re: Winsock programmierung - Thread erforderlich877Manfred X09.05.11 16:07
Re: Winsock programmierung - Thread erforderlich836supernicky09.05.11 16:36
Re: Winsock programmierung - Thread erforderlich878supernicky10.05.11 22:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel