Tach
Ich habe ne TCP Verbung zwischen Server & Client.
Server:
Client:
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.
Ich habe ne TCP Verbung zwischen Server & Client.
Server:
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.Text
- Public Class Form1
- Private SimpleServer As TcpListener
- Private Client As New TcpClient
- Private Stream As NetworkStream
- Dim bytes() As Byte
- Dim hasData As Boolean
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- SimpleServer = New TcpListener(System.Net.IPAddress.Parse(0), 1111)
- SimpleServer.Start()
- SimpleServer.BeginAcceptTcpClient(AddressOf OnConnect, New Object)
- Timer1.Enabled = True
- End Sub
- Private Sub OnConnect(ByVal ar As System.IAsyncResult)
- Client = SimpleServer.EndAcceptTcpClient(ar)
- Stream = Client.GetStream
- ReDim bytes(Client.ReceiveBufferSize)
- Stream.BeginRead(bytes, 0, CInt(Client.ReceiveBufferSize), AddressOf onGetData, New Object)
- End Sub
- Private Sub onGetData(ByVal ar As System.IAsyncResult)
- hasData = True
- ar = Stream.BeginRead(bytes, 0, CInt(Client.ReceiveBufferSize), AddressOf onGetData, New Object)
- Stream.EndRead(ar)
- End Sub
- Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- If hasData = True Then
- Dim clientdata As String = Encoding.ASCII.GetString(bytes)
- ListBox1.Items.Add(clientdata)
- ListBox1.SelectedIndex = ListBox1.Items.Count - 1
- hasData = False
- End If
- End Sub
- End Class
Client:
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.Text
- Public Class Form2
- Dim verbunden As Boolean = False
- Private SimpleClient As New TcpClient
- Private Stream As NetworkStream
- Dim bytes() As Byte
- Dim hasdata As Boolean
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- End Sub
- Private Sub TextBox1_KeyPress( _
- ByVal sender As Object, _
- ByVal e As System.Windows.Forms.KeyPressEventArgs) _
- Handles TextBox1.KeyPress
- If Asc(e.KeyChar) = 13 Then
- If verbunden = True Then
- Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(nickname & ": " & TextBox1.Text)
- Stream.Write(sendBytes, 0, sendBytes.Length)
- ListBox1.Items.Add(nickname & ": " & TextBox1.Text)
- TextBox1.Clear()
- End If
- End If
- End Sub
- Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
- End Sub
- Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ListBox1.Items.Add("Verbinung wird hergestellt.")
- Try
- SimpleClient.Connect(server, 1111)
- Stream = SimpleClient.GetStream
- verbunden = True
- ListBox1.Items.Add("Verbinungsaufbau erfolgreich.")
- Timer1.Enabled = True
- Catch
- ListBox1.Items.Add("Verbinungsaufbau fehlgeschlagen.")
- verbunden = False
- End Try
- End Sub
- 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.