/// <summary> /// 移除用户 /// </summary> /// <param name="user">指定要移除的用户</param> public void RemoveUser(User user) { if (yongHuTuiChuEvent != null) yongHuTuiChuEvent(user); userList.Remove(user.guid); user.Close(); //AddItemToListBox(string.Format("当前连接用户数:{0}", userList.Count)); }
/// <summary> /// 向客户端发送消息 /// </summary> /// <param name="user"></param> /// <param name="obj"></param> public void SendObjToClient(User user, Object obj) { try { lock (this) { user.bw.Write(new XuLieHua().ToBytes(obj)); user.bw.Flush(); } } catch (Exception ex) { ImportDataLog.WriteLog("进入异常:" + ex.Message); } }
/// <summary> /// 接收客户端连接 /// </summary> public void ListenClientConnect() { TcpClient newClient = null; while (true) { try { newClient = myListener.AcceptTcpClient(); } catch (Exception ex) { //ImportDataLog.WriteLog("连接中断1111:" + ex.Message); //ImportDataLog.WriteLog(ex.Message); //当单击‘停止监听’或者退出此窗体时 AcceptTcpClient() 会产生异常 //因此可以利用此异常退出循环 break; } //每接收一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息;. User user = new User(newClient); Thread threadReceive = new Thread(ReceiveData); threadReceive.IsBackground = true; threadReceive.Start(user); userList.Add(user.guid,user); if (xinYongHuDengLuEvent != null) xinYongHuDengLuEvent(user); } }
void ns_yongHuTuiChuEvent(User user) { //MessageBox.Show(xu.qq); //MessageBox.Show((ns.userList.Count-1).ToString()); }
void ns_xinYongHuDengLuEvent(User user) { //MessageBox.Show(ns.userList.Count.ToString()); }
void ns_duiHuaEvent(User user, object obj) { ThreadPool.QueueUserWorkItem(new WaitCallback(duihuacall), new ServerObj(user, obj)); }
internal ServerObj(User user, Object obj) { this.user = user; this.obj = obj; }