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}"); } } } } }
//public Guid Guid => guid; public ClientReceiver(TcpClient client, ClientTransmitter clientTransmitter) { SetTcpClient(client, clientTransmitter); }