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);
            }
        }
Ejemplo n.º 2
0
        public ModbusTcpRequestHandler(TcpClient tcpClient, ModbusTcpServer tcpServer) : base(tcpServer, 260)
        {
            _tcpClient     = tcpClient;
            _networkStream = tcpClient.GetStream();

            this.CTS.Token.Register(() => _networkStream.Close());

            base.Start();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }