Пример #1
0
        private void NotifyThatConversationStarted(PairHandler pair)
        {
            string message = "Conversation started between " + pair.ClientName1 + " and " + pair.ClientName2;

            BroadcastMessage(pair.Client1, message);
            BroadcastMessage(pair.Client2, message);
        }
Пример #2
0
 public ClientHandler(PairHandler handler)
 {
     pairHandler        = handler;
     clientSocket       = handler.Client1;
     clientSocketFriend = handler.Client2;
     clientName         = handler.ClientName1;
 }
Пример #3
0
        public void Start()
        {
            TcpListener serverSocket = new TcpListener(IPAddress.Any, 8888);

            serverSocket.Start();

            Console.WriteLine("Chat Server Started ....");

            TcpClient clientSocket;

            while (true)
            {
                clientSocket = serverSocket.AcceptTcpClient();
                clientSocket.ReceiveBufferSize = 4096;

                byte[] bytesFrom = new byte[4096];

                //when client connects to server he sends:
                // -his username
                // -person username that he wants to chat with
                NetworkStream networkStream = clientSocket.GetStream();
                networkStream.Read(bytesFrom, 0, clientSocket.ReceiveBufferSize);

                string dataFromClient = Encoding.ASCII.GetString(bytesFrom);
                dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));

                string[] data = dataFromClient.Split(':');

                clientsList.Add(data[0], clientSocket);

                if (!data[1].Equals(""))
                {
                    UpdatePairTalk(data[0], data[1]);
                }

                PairTalk pair = CheckIfPairExist();

                if (pair != null)
                {
                    PairHandler pairHandler = new PairHandler(
                        (TcpClient)clientsList[pair.ClientName1], pair.ClientName1,
                        (TcpClient)clientsList[pair.ClientName2], pair.ClientName2);
                    BroadcastOldChat(pairHandler.OldChatHistory, pairHandler.Client1, pairHandler.Client2);

                    clientsList.Remove(pair.ClientName1);
                    clientsList.Remove(pair.ClientName2);
                    pairs.Remove(pair);

                    Console.WriteLine("Conversation started between " + pair.ClientName1 + " and " + pair.ClientName2);
                    NotifyThatConversationStarted(pairHandler);
                }
            }
        }