/// <summary> /// 主动断开会话 /// </summary> /// <param name="sender"></param> /// <param name="closeSessionArgs"></param> protected virtual void OnCloseSession(object sender, CloseSessionArgs closeSessionArgs) { try { if (closeSessionArgs.Session.SocketAsyncEventArgs.AcceptSocket != null) { closeSessionArgs.Session.SocketAsyncEventArgs.AcceptSocket.BeginDisconnect(false, (result) => { CloseSessionArgs args = result.AsyncState as CloseSessionArgs; if (args.Session.SocketAsyncEventArgs.AcceptSocket != null) { try { args.Session.SocketAsyncEventArgs.AcceptSocket.Shutdown(SocketShutdown.Both); } catch (Exception ex) { _logger.Error(ex); } } }, closeSessionArgs); } } catch (Exception ex) { _logger.Error(ex); } }
public virtual void OnClosed(CloseSessionArgs closeSessionArgs) { Closed(this,closeSessionArgs); }