/// <summary> /// 当接收到了新的请求的时候执行的操作 /// </summary> /// <param name="obj"></param> protected override void ThreadPoolLogin(object obj) { // 为了提高系统的响应能力,采用异步来实现,即时有数万台设备接入也能应付 if (obj is Socket socket) { ModBusState state = new ModBusState( ) { WorkSocket = socket, }; try { state.IpEndPoint = (System.Net.IPEndPoint)socket.RemoteEndPoint; state.IpAddress = state.IpEndPoint.Address.ToString( ); } catch (Exception ex) { LogNet?.WriteException(ToString( ), "Ip信息获取失败", ex); } if (IsTrustedClientsOnly) { // 检查受信任的情况 if (!CheckIpAddressTrusted(state.IpAddress)) { // 客户端不被信任,退出 LogNet?.WriteDebug(ToString( ), $"客户端 [ {state.IpEndPoint} ] 不被信任,禁止登录!"); state.WorkSocket.Close( ); return; } } LogNet?.WriteDebug(ToString( ), $"客户端 [ {state.IpEndPoint} ] 上线"); try { state.WorkSocket.BeginReceive(state.HeadByte, 0, 6, SocketFlags.None, new AsyncCallback(ModbusHeadReveiveCallback), state); } catch (Exception ex) { state.WorkSocket?.Close( ); LogNet?.WriteException(ToString(), $"客户端 [ {state.IpEndPoint} ] 头子节接收失败!", ex); state = null; } } }
/// <summary> /// 当接收到了新的请求的时候执行的操作 /// </summary> /// <param name="obj"></param> protected override void ThreadPoolLogin(object obj) { // 为了提高系统的响应能力,采用异步来实现,即时有数万台设备接入也能应付 if (obj is Socket socket) { ModBusState state = new ModBusState() { WorkSocket = socket, }; try { state.WorkSocket.BeginReceive(state.HeadByte, 0, 6, SocketFlags.None, new AsyncCallback(ModbusHeadReveiveCallback), state); } catch (Exception ex) { state = null; LogNet?.WriteException(LogHeaderText, "头子节接收失败!", ex); } } }