TCP Verbindung

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von bsHobbit.

    TCP Verbindung

    Tach ;)
    Ich habe ne TCP Verbung zwischen Server & Client.
    Server:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Public Class Form1
    4. Private SimpleServer As TcpListener
    5. Private Client As New TcpClient
    6. Private Stream As NetworkStream
    7. Dim bytes() As Byte
    8. Dim hasData As Boolean
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. SimpleServer = New TcpListener(System.Net.IPAddress.Parse(0), 1111)
    11. SimpleServer.Start()
    12. SimpleServer.BeginAcceptTcpClient(AddressOf OnConnect, New Object)
    13. Timer1.Enabled = True
    14. End Sub
    15. Private Sub OnConnect(ByVal ar As System.IAsyncResult)
    16. Client = SimpleServer.EndAcceptTcpClient(ar)
    17. Stream = Client.GetStream
    18. ReDim bytes(Client.ReceiveBufferSize)
    19. Stream.BeginRead(bytes, 0, CInt(Client.ReceiveBufferSize), AddressOf onGetData, New Object)
    20. End Sub
    21. Private Sub onGetData(ByVal ar As System.IAsyncResult)
    22. hasData = True
    23. ar = Stream.BeginRead(bytes, 0, CInt(Client.ReceiveBufferSize), AddressOf onGetData, New Object)
    24. Stream.EndRead(ar)
    25. End Sub
    26. Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    27. If hasData = True Then
    28. Dim clientdata As String = Encoding.ASCII.GetString(bytes)
    29. ListBox1.Items.Add(clientdata)
    30. ListBox1.SelectedIndex = ListBox1.Items.Count - 1
    31. hasData = False
    32. End If
    33. End Sub
    34. End Class


    Client:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Public Class Form2
    4. Dim verbunden As Boolean = False
    5. Private SimpleClient As New TcpClient
    6. Private Stream As NetworkStream
    7. Dim bytes() As Byte
    8. Dim hasdata As Boolean
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. End Sub
    11. Private Sub TextBox1_KeyPress( _
    12. ByVal sender As Object, _
    13. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    14. Handles TextBox1.KeyPress
    15. If Asc(e.KeyChar) = 13 Then
    16. If verbunden = True Then
    17. Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(nickname & ": " & TextBox1.Text)
    18. Stream.Write(sendBytes, 0, sendBytes.Length)
    19. ListBox1.Items.Add(nickname & ": " & TextBox1.Text)
    20. TextBox1.Clear()
    21. End If
    22. End If
    23. End Sub
    24. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    25. End Sub
    26. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    27. ListBox1.Items.Add("Verbinung wird hergestellt.")
    28. Try
    29. SimpleClient.Connect(server, 1111)
    30. Stream = SimpleClient.GetStream
    31. verbunden = True
    32. ListBox1.Items.Add("Verbinungsaufbau erfolgreich.")
    33. Timer1.Enabled = True
    34. Catch
    35. ListBox1.Items.Add("Verbinungsaufbau fehlgeschlagen.")
    36. verbunden = False
    37. End Try
    38. End Sub
    39. End Class


    Zum Client: 'nickname' & 'server' werden schon in einer Form vorher deklariert.

    So, das läuft auch alles schoen und gut.
    Nur jetzt möchte ich daraus ein Multiuserchat basteln.
    Nur ich weiß nicht wie ich anfangen soll usw..
    Mit Arrays kenn ich mich garnicht aus...desshalb hätte ich gerne Hilfe von euch :)
    Ich stelle mir es so vor, dass alle Clienten dann etwas zum Server schicken koennen, und der Server es an alle weitergibt. Aber der Server soll auch etwas schreiben koenn.
    Ich hoffe ich finde Helferlein :>

    Mit freundlichen Grüßen Chris.
    Mit arrays würde ich das auch nicht lösen...

    Schau die da mal die Listen an, die vb .net bereit stellt

    Beispiel:

    VB.NET-Quellcode

    1. Dim MyList as new List(of String)
    2. MyList.add("Huhu")
    3. MyList.add("Haha")
    4. MyList.add("hehe")
    5. MyList.add("hihi")
    6. for i as integer = 0 to MyList.count -1
    7. msgbox(MyList(i))
    8. next i


    Jetzt könnte man sich ja vorstellen, das man keine Strings verwalten will, sondern Clients...