| Eldia How do I cheat?
 
 ![]() Reputation: 0 
 Joined: 28 Jan 2010
 Posts: 5
 
 
 | 
			
				|  Posted: Thu Jan 28, 2010 9:41 pm    Post subject: [VB2008) Chat Server and Client Adding User's Online Txtbox? |   |  
				| 
 |  
				| I am Really New to This site and Vb2008 So bare with me  I am Making A Vb Chat Server and Client I have a Basic Code But I want to Add a Txt Box That will Display The Users Online Kinda Like Xat Chat. 
 The Server does not use Winsock Heres the Servers Code:
 
 
  	  | Code: |  	  | Imports System.Net.Sockets Imports System.Text
 Module Module1
 Dim clientsList As New Hashtable
 Sub Main()
 Dim serverSocket As New TcpListener(8888)
 Dim clientSocket As TcpClient
 Dim infiniteCounter As Integer
 Dim counter As Integer
 
 serverSocket.Start()
 msg("BioHazard Server Started ....")
 counter = 0
 infiniteCounter = 0
 For infiniteCounter = 1 To 2
 infiniteCounter = 1
 counter += 1
 clientSocket = serverSocket.AcceptTcpClient()
 
 Dim bytesFrom(10024) As Byte
 Dim dataFromClient As String
 
 Dim networkStream As NetworkStream = _
 clientSocket.GetStream()
 networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
 dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
 dataFromClient = _
 dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
 
 clientsList(dataFromClient) = clientSocket
 
 broadcast(dataFromClient + " Joined ", dataFromClient, False)
 
 msg(dataFromClient + " Joined chat room ")
 Dim client As New handleClinet
 client.startClient(clientSocket, dataFromClient, clientsList)
 Next
 
 clientSocket.Close()
 serverSocket.Stop()
 msg("exit")
 Console.ReadLine()
 End Sub
 
 Sub msg(ByVal mesg As String)
 mesg.Trim()
 Console.WriteLine(" >> " + mesg)
 End Sub
 Private Sub broadcast(ByVal msg As String, _
 ByVal uName As String, ByVal flag As Boolean)
 Dim Item As DictionaryEntry
 For Each Item In clientsList
 Dim broadcastSocket As TcpClient
 broadcastSocket = CType(Item.Value, TcpClient)
 Dim broadcastStream As NetworkStream = _
 broadcastSocket.GetStream()
 Dim broadcastBytes As [Byte]()
 
 If flag = True Then
 broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg)
 Else
 broadcastBytes = Encoding.ASCII.GetBytes(msg)
 End If
 
 broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
 broadcastStream.Flush()
 Next
 End Sub
 
 Public Class handleClinet
 Dim clientSocket As TcpClient
 Dim clNo As String
 Dim clientsList As Hashtable
 
 Public Sub startClient(ByVal inClientSocket As TcpClient, _
 ByVal clineNo As String, ByVal cList As Hashtable)
 Me.clientSocket = inClientSocket
 Me.clNo = clineNo
 Me.clientsList = cList
 Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat)
 ctThread.Start()
 End Sub
 
 Private Sub doChat()
 Dim infiniteCounter As Integer
 Dim requestCount As Integer
 Dim bytesFrom(10024) As Byte
 Dim dataFromClient As String
 Dim sendBytes As [Byte]()
 Dim serverResponse As String
 Dim rCount As String
 requestCount = 0
 For infiniteCounter = 1 To 2
 infiniteCounter = 1
 Try
 requestCount = requestCount + 1
 Dim networkStream As NetworkStream = _
 clientSocket.GetStream()
 networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
 dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
 dataFromClient = _
 dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
 msg("From client - " + clNo + " : " + dataFromClient)
 rCount = Convert.ToString(requestCount)
 
 broadcast(dataFromClient, clNo, True)
 Catch ex As Exception
 MsgBox(ex.ToString)
 End Try
 Next
 End Sub
 
 End Class
 End Module
 
 | 
 
 
 
 
 
 Heres The Clients Code:
 
  	  | Code: |  	  | Imports System.Net.Sockets Imports System.Text
 Public Class Form1
 Dim clientSocket As New System.Net.Sockets.TcpClient()
 Dim serverStream As NetworkStream
 Dim readData As String
 Dim infiniteCounter As Integer
 
 Private Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
 Dim outStream As Byte() = _
 System.Text.Encoding.ASCII.GetBytes(TextBox2.Text + "$")
 serverStream.Write(outStream, 0, outStream.Length)
 serverStream.Flush()
 End Sub
 
 Private Sub msg()
 If Me.InvokeRequired Then
 Me.Invoke(New MethodInvoker(AddressOf msg))
 Else
 TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + readData
 End If
 End Sub
 
 Private Sub Button2_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button2.Click
 readData = "Conected to Chat Server ..."
 msg()
 clientSocket.Connect("71.193.117.188", 8888)
 'Label1.Text = "Client Socket Program - Server Connected ..."
 serverStream = clientSocket.GetStream()
 
 Dim outStream As Byte() = _
 System.Text.Encoding.ASCII.GetBytes(TextBox3.Text + "$")
 serverStream.Write(outStream, 0, outStream.Length)
 serverStream.Flush()
 
 Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf getMessage)
 ctThread.Start()
 End Sub
 
 Private Sub getMessage()
 For infiniteCounter = 1 To 2
 infiniteCounter = 1
 serverStream = clientSocket.GetStream()
 Dim buffSize As Integer
 Dim inStream(10024) As Byte
 buffSize = clientSocket.ReceiveBufferSize
 serverStream.Read(inStream, 0, buffSize)
 Dim returndata As String = _
 System.Text.Encoding.ASCII.GetString(inStream)
 readData = "" + returndata
 msg()
 Next
 End Sub
 
 Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
 
 End Sub
 Private Sub Button3_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button3.Click
 TextBox1.Text = ""
 End Sub
 
 Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click
 
 End Sub
 End Class
 
 | 
 Thanks for your time!
 If I posted this Wrong or made a Mistake tell me
   Thank You Eldia
 |  |