123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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("Chat 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
|