public ModbusTcpRequestHandler(TcpClient tcpClient, ModbusTcpServer modbusTcpServer) { _tcpClient = tcpClient; _modbusTcpServer = modbusTcpServer; _cts = new CancellationTokenSource(); _networkStream = tcpClient.GetStream(); _buffer = ArrayPool <byte> .Shared.Rent(256); _cts.Token.Register(() => _networkStream.Close()); _requestReader = new ExtendedBinaryReader(new MemoryStream(_buffer)); _responseWriter = new ExtendedBinaryWriter(new MemoryStream(_buffer)); this.LastRequest = Stopwatch.StartNew(); this.IsReady = true; if (modbusTcpServer.IsAsynchronous) { _task = Task.Run(async() => { while (!_cts.IsCancellationRequested) { await this.ReceiveRequestAsync(); } }, _cts.Token); } }
public ModbusTcpRequestHandler(TcpClient tcpClient, ModbusTcpServer tcpServer) : base(tcpServer, 260) { _tcpClient = tcpClient; _networkStream = tcpClient.GetStream(); this.CTS.Token.Register(() => _networkStream.Close()); base.Start(); }
public ModbusTcpRequestHandler(TcpClient tcpClient, ModbusTcpServer tcpServer) : base(tcpServer, 260) { _tcpClient = tcpClient; _networkStream = tcpClient.GetStream(); this.DisplayName = ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString(); this.CTS.Token.Register(() => _networkStream.Close()); base.Start(); }
public ModbusTcpRequestHandler(TcpClient tcpClient, ModbusTcpServer tcpServer, bool handleUnitIdentifiers = false /* For testing only */) : base(tcpServer, 260) { _tcpClient = tcpClient; _networkStream = tcpClient.GetStream(); this.DisplayName = ((IPEndPoint)_tcpClient.Client.RemoteEndPoint).Address.ToString(); this.CTS.Token.Register(() => _networkStream.Close()); _handleUnitIdentifiers = handleUnitIdentifiers; base.Start(); }