/// <summary> /// Returns the Packet of data sent by a TcpClient /// </summary> /// <param name="serverData">Returns the ServerData object if the packet was a ServerDataPacket</param> /// <returns>The Packet sent</returns> IDataPacket ListenForPackets(out Data data) { Logger.Instance.Log("Waiting for a connection"); var client = Listener.AcceptTcpClient(); Logger.Instance.Log("Connected"); byte[] bytes = new byte[Packet.MAX_BYTE_LENGTH]; IDataPacket packet = null; if (client.GetStream().Read(bytes, 0, bytes.Length) != 0) { packet = Packet.ToPacket(bytes); } data = new Data { TcpClient = client }; if (packet is ServerDataPacket) { var sPacket = (ServerDataPacket)packet; data = new Data(ConnectedClients.Count == 0 ? 0 : ConnectedClients.Last().ID + 1) { TcpClient = client, IPv4 = sPacket.IPv4, Name = sPacket.Name, Port = sPacket.Port }; ConnectedClients.Add(data); Logger.Instance.Log($"Server @ {data.IPv4} added to collection"); } return(packet); }
/// <summary> /// Returns the Packet of data sent by a TcpClient /// </summary> /// <param name="serverData">Returns the ServerData object if the packet was a ServerDataPacket</param> /// <returns>The Packet sent</returns> IDataPacket ListenForPackets(ref ClientObject cO) { var client = cO.Data.TcpClient; byte[] bytes = new byte[Packet.MAX_BYTE_LENGTH]; IDataPacket packet = null; if (client.GetStream().Read(bytes, 0, bytes.Length) != 0) { packet = Packet.ToPacket(bytes); } if (packet is ServerDataPacket) { var sPacket = (ServerDataPacket)packet; cO.Data = new Data(ConnectedClients.Count == 0 ? 0 : ConnectedClients.Last().Data.ID + 1) { TcpClient = client, FirstConnect = sPacket.FirstConnect, IPv4 = sPacket.IPv4, Name = sPacket.Name, Port = sPacket.Port }; Logger.Instance.Log($"Server @ {cO.Data.IPv4} added to collection"); } return(packet); }