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++; } } }
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(); }
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); } } }