Exemplo n.º 1
0
        public async Task Read()
        {
            try
            {
                byte[] buffer = new byte[tcpClient.ReceiveBufferSize];
                while (true)
                {
                    if (!tcpClient.Connected)
                    {
                        throw new PortClosedException();
                    }
                    NetworkStream inputStream = tcpClient.GetStream();
                    int           dataLength  = await inputStream.ReadAsync(buffer, 0, 100);

                    if (dataLength == 0)
                    {
                        Close();
                        PortClosedEventArgs portClosedEventArgs = new PortClosedEventArgs("Remote tcp endpoint");
                        OnClose(portClosedEventArgs);
                        break;
                    }
                    byte[] data = new byte[dataLength];
                    Array.Copy(buffer, data, dataLength);
                    BytesReceivedEventArgs eventArgs = new BytesReceivedEventArgs(data);
                    OnDataReceived(eventArgs);
                }
            }
            catch (Exception e)
            {
                ExceptionOccuredEventArgs eventArgs = new ExceptionOccuredEventArgs(e);
                OnReadExceptionOccured(eventArgs);
            }
        }
Exemplo n.º 2
0
        static void PortClosedEventHandler(object sender, PortClosedEventArgs eventArgs)
        {
            Port port = (Port)sender;

            if (unidentifiedPorts.Contains(port))
            {
                unidentifiedPorts.Remove(port);
            }
            else
            {
                try
                {
                    Client client = clients.Single(c => c.port == port);
                    RemoveDataFlow(client);
                    clientsByType[client.type].Remove(client);
                }
                catch (Exception e)
                {
                    Util.DisplayExceptionInfo(e, "PortClosedEventHandler of " + port.ID);
                }
            }

            Console.WriteLine("Port removed: " + port.ID + ", initiator: " + eventArgs.initiator);
        }
Exemplo n.º 3
0
        protected void OnClose(PortClosedEventArgs eventArgs)
        {
            EventHandler <PortClosedEventArgs> handler = PortClosed;

            handler?.Invoke(this, eventArgs);
        }