MS
This commit is contained in:
114
ChatServer/Program.vb
Normal file
114
ChatServer/Program.vb
Normal file
@@ -0,0 +1,114 @@
|
||||
Imports System
|
||||
Imports System.Net.Sockets
|
||||
Imports System.Text
|
||||
Module Program
|
||||
Dim clientsList As New Hashtable
|
||||
Sub Main()
|
||||
|
||||
Dim serverSocket As New TcpListener(8888)
|
||||
Dim clientSocket As TcpClient
|
||||
Dim counter As Integer
|
||||
|
||||
serverSocket.Start()
|
||||
msg("Chat Server Started ....")
|
||||
counter = 0
|
||||
|
||||
While (True)
|
||||
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)
|
||||
End While
|
||||
|
||||
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
|
||||
|
||||
While (True)
|
||||
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
|
||||
msg($"### ERROR {ex.ToString}")
|
||||
End Try
|
||||
End While
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Module
|
||||
Reference in New Issue
Block a user