Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Threading;
- using System.Net.Sockets;
- using System.Text;
- using System.Collections;
- using System.Net;
- namespace ConsoleApplication1
- {
- class Program
- {
- public static Hashtable clientsList = new Hashtable();
- static void Main(string[] args)
- {
- TcpListener serverSocket = new TcpListener(IPAddress.Any,3306);
- TcpClient clientSocket = default(TcpClient);
- int counter = 0;
- serverSocket.Start();
- Console.WriteLine("Chat Server Started ....");
- counter = 0;
- while ((true))
- {
- try
- {
- counter += 1;
- clientSocket = serverSocket.AcceptTcpClient();
- byte[] bytesFrom = new byte[10025];
- string dataFromClient = null;
- NetworkStream networkStream = clientSocket.GetStream();
- networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
- dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
- dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
- clientsList.Add(dataFromClient, clientSocket);
- broadcast(dataFromClient + " Joined ", dataFromClient, false);
- Console.WriteLine(dataFromClient + " Joined chat room ");
- handleClinet client = new handleClinet();
- client.startClient(clientSocket, dataFromClient, clientsList);
- }
- catch { }
- }
- Console.ReadKey();
- clientSocket.Close();
- serverSocket.Stop();
- Console.WriteLine("exit");
- Console.ReadLine();
- }
- public static void broadcast(string msg, string uName, bool flag)
- {
- try
- {
- foreach (DictionaryEntry Item in clientsList)
- {
- TcpClient broadcastSocket;
- broadcastSocket = (TcpClient)Item.Value;
- NetworkStream broadcastStream = broadcastSocket.GetStream();
- Byte[] broadcastBytes = null;
- if (flag == true)
- {
- broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg);
- }
- else
- {
- broadcastBytes = Encoding.ASCII.GetBytes(msg);
- }
- broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length);
- broadcastStream.Flush();
- }
- }
- catch { Console.ReadKey(); }
- } //end broadcast function
- }//end Main class
- public class handleClinet
- {
- TcpClient clientSocket;
- string clNo;
- Hashtable clientsList;
- public void startClient(TcpClient inClientSocket, string clineNo, Hashtable cList)
- {
- this.clientSocket = inClientSocket;
- this.clNo = clineNo;
- this.clientsList = cList;
- Thread ctThread = new Thread(doChat);
- ctThread.Start();
- }
- private void doChat()
- {
- int requestCount = 0;
- byte[] bytesFrom = new byte[10025];
- string dataFromClient = null;
- Byte[] sendBytes = null;
- string serverResponse = null;
- string rCount = null;
- requestCount = 0;
- while ((true))
- {
- try
- {
- requestCount = requestCount + 1;
- NetworkStream networkStream = clientSocket.GetStream();
- networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
- dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
- dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
- if (dataFromClient == "closing")
- {
- clientsList.Remove(clNo);
- Program.broadcast("Sa deconectat", clNo, true);
- break;
- }
- Console.WriteLine("From client - " + clNo + " : " + dataFromClient);
- rCount = Convert.ToString(requestCount);
- Program.broadcast(dataFromClient, clNo, true);
- }
- catch (Exception ex)
- {
- Console.WriteLine("Opsy");
- Console.ReadKey();
- }
- }//end while
- }//end doChat
- } //end class handleClinet
- }//end namespace
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement