예제 #1
0
        public void ReceiveConnections()
        {
            string clientName = string.Empty;

            byte[] bytes = new byte[1024];
            while (true)
            {
                Console.WriteLine("Waiting for connection...");
                var handler = _socket.Accept();
                _clientSockets.Add(handler);

                IPAddress clientAddress = handler.RemoteEndPoint();

                data = null;


                while (true)
                {
                    int byteRec = handler.Receive(bytes);
                    data += Encoding.ASCII.GetString(bytes, 0, byteRec);

                    clientName = data.Replace("connect: ", "");
                    ClientState clientState = new ClientState()
                    {
                        Name = clientName
                    };
                    _clients.Add(clientAddress, clientState);

                    if (data.Length > 0)
                    {
                        break;
                    }
                }

                foreach (var user in bytes)
                {
                    byte[] msg = Encoding.ASCII.GetBytes(user.ToString());
                    handler.Send(msg);
                }
            }
        }
예제 #2
0
 public void StartServer(IPAddress ipAddress)
 {
     try
     {
         IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8300);
         serverSocket.Bind(localEndPoint);
         serverSocket.Listen(10);
         Console.WriteLine("Waiting for clients to connect...");
         while (true)
         {
             ISocketProxy clientSocket = serverSocket.Accept();
             Individual   normalPerson = new NormalPerson(new Person(clientSocket));
             Thread       myThread     = new Thread(HandleLogin);
             myThread.Start(normalPerson);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
 }