/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token"> 断开连接的用户对象</param> /// <param name="error">断开连接的错误编码</param> public void ClientClose(UserToken token,string error) { if (token.conn != null) { lock (token) { //通知应用层面 客户端断开连接了 center.ClientClose(token, error); token.Close(); //加回一个信号量,供其它用户使用 pool.push(token); acceptClients.Release(); } } }
/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token">断开连接的用户对象</param> /// <param name="error">断开连接的错误编码</param> public void ClientClose(UserToken token, string error) { if (token.conn != null) { //防止关闭释放的时候,出现多线程的访问,也是避免同一个userToken同时有多个线程操作 lock (token) { //通知应用层面,客户端断开连接了 Center.ClientClose(token, error); token.Close(); pool.Push(token); } } }
// 客户端断开连接 断开连接的错误编码 public void ClientClose(UserToken token, string error) { if (token.conn != null) { lock (token) { //通知应用层 客户端断开连接 token.Close(); pool.Push(token); acceptClients.Release(); } } }
/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token">断开连接的用户对象</param> /// <param name="error">断开连接的错误编码</param> public void ClientClose(UserToken token, string error) { if (token.conn != null) { lock (token) { //通知应用层面,客户端断开连接 center.ClientClose(token, error); token.Close(); pool.push(token); //信号量+1,供其他用户使用 acceptClients.Release(); } } }
/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token">断开连接的用户</param> public void ClientClose(UserToken token, string error) { if (token.conn != null) { lock (token) { //TODO 通知应用层 客户端断开连接 center.ClientClose(token, error); token.Close(); //加回一个信号量 供其他用户使用 pool.Push(token); acceptClient.Release(); } } }
/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token">断开连接的用户对象</param> /// <param name="error"断开连接的错误编码></param> public void ClientClose(UserToken token, string error) { if (token.conn != null) { lock (token) { //通知应用层面,客户端断开连接 center.ClientClose(token, error); token.Close(); //返回用户池 pool.Push(token); //加回一个信号量,供其他用户使用 acceptClient.Release(); } } }
public void ProcessSend(SocketAsyncEventArgs e) { UserToken token = e.UserToken as UserToken; if (e.SocketError != SocketError.Success) { ClientClose(token, e.SocketError.ToString()); } else { if (token.CheckWriteQueue()) { //消息发送成功,回调成功 token.Writed(); } else { token.Close(); pool.Push(token); } } }
/// <summary> /// 客户端断开连接 /// </summary> /// <param name="token">断开的用户对象</param> /// <param name="error">断开连接的错误编码</param> public void ClientClose(UserToken token, string error) { if (token.Conn != null) { lock (token) { //通知应用层客户端断开连接 token.Close(); //将连接还给连接池 _pool.Push(token); //释放信号量,加回一个供其他用户使用 _acceptClients.Release(); } } }