示例#1
0
        static void Main(string[] args)
        {
            int count = 1;

            TcpListener ServerSocket = new TcpListener(IPAddress.Any, 5000);

            ServerSocket.Start();

            while (true)
            {
                using (var context = new MessageChannelContext())
                {
                    TcpClient client = ServerSocket.AcceptTcpClient();

                    lock (_lock) clientList.Add(count, client);

                    var user = context.Users.FirstOrDefault(x => x.ChatOrder == count);

                    Console.WriteLine(!string.IsNullOrEmpty(user.UserName) ? $"{user.UserName} is connected" : "someone connected!!");

                    Thread t = new Thread(Handle_clients);
                    t.Start(count);
                    count++;
                }
            }
        }
示例#2
0
        public static void Handle_clients(object o)
        {
            int       id = (int)o;
            TcpClient client;

            lock (_lock) client = clientList[id];

            using (var context = new MessageChannelContext())
            {
                while (true)
                {
                    NetworkStream stream     = client.GetStream();
                    byte[]        buffer     = new byte[1024];
                    int           byte_count = stream.Read(buffer, 0, buffer.Length);

                    if (byte_count == 0)
                    {
                        break;
                    }

                    string data = Encoding.ASCII.GetString(buffer, 0, byte_count);
                    Broadcast(data);
                    var user = context.Users.FirstOrDefault(x => x.ChatOrder == id);
                    Console.WriteLine(!string.IsNullOrEmpty(user.UserName) ? $"{user.UserName}: {data}" : data);
                }
            }

            lock (_lock) clientList.Remove(id);
            client.Client.Shutdown(SocketShutdown.Both);
            client.Close();
        }
示例#3
0
        public void Add(string name)
        {
            using (var dbContext = new MessageChannelContext())
            {
                if (!dbContext.Users.Any(x => x.UserName.Contains(name)))
                {
                    var model = new User
                    {
                        UserName = name
                    };

                    dbContext.Add(model);
                }
            }
        }