Beispiel #1
0
 private void SetTcpClient(TcpClient client, ClientTransmitter clientTransmitter)
 {
     this.client            = client;
     this.stream            = client.GetStream();
     this.clientTransmitter = clientTransmitter;
     Task.Factory.StartNew(ReadData);
 }
        public void UnRegistryTransmitter(ClientTransmitter transmitter)
        {
            transmitter.Clear();
            transmitters.Remove(transmitter);
            var tInfo = registryTransmitterInfos.Where(w => w.Guid == transmitter.Guid).FirstOrDefault();

            if (tInfo != null)
            {
                registryTransmitterInfos.Remove(tInfo);
            }
        }
        private async Task StartTcpListener()
        {
            tcpListener.Start();
            while (true)
            {
                var client = await tcpListener.AcceptTcpClientAsync();

                if (client != null)
                {
                    var stream = client.GetStream();
                    if (stream.CanRead && stream.CanWrite)
                    {
                        try
                        {
                            var binary     = new BinaryFormatter();
                            var clientType = (ClientType)binary.Deserialize(stream);
                            var guid       = new Guid((byte[])binary.Deserialize(stream));

                            ClientTransmitter transmitter;

                            switch (clientType)
                            {
                            case ClientType.Transmitter:
                                var regInfo = registryTransmitterInfos.FirstOrDefault();
                                if (regInfo != null)
                                {
                                    transmitter = new ClientTransmitter(guid, regInfo, client);
                                    transmitter.Listening(() => UnRegistryTransmitter(transmitter));
                                    transmitters.Add(transmitter);
                                }
                                break;

                            case ClientType.Receiver:
                                transmitter = transmitters.Where(w => w.Guid == guid).FirstOrDefault();
                                if (transmitter != null)
                                {
                                    transmitter.AddReceivers(new ClientReceiver(client, transmitter));
                                }
                                break;

                            default:
                                client.Close();
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine($"Read connection client failed. Ex: {ex.Message}");
                        }
                    }
                }
            }
        }
Beispiel #4
0
        //public Guid Guid => guid;


        public ClientReceiver(TcpClient client, ClientTransmitter clientTransmitter)
        {
            SetTcpClient(client, clientTransmitter);
        }