public void Update(Client c)
 {
     if (c.getAddress() == clientAddress && c.getDataPort() == dataPort)
     {
         if (dataFormat != c.getDataFormat())
         {
             dataFormat = c.getDataFormat();
             //Console.WriteLine("Existing client "+clientAddress+":"+dataPort+" data format updated:");
             switch (dataFormat)
             {
                 case (OmicronServer.OutputType.TacTile):
                     Console.WriteLine("    Requested data using TouchAPI (TacTile) format");
                     break;
                 case (OmicronServer.OutputType.Omicron_Legacy):
                     Console.WriteLine("    Requested data using Omicron Legacy format");
                     break;
                 case (OmicronServer.OutputType.Omicron):
                     Console.WriteLine("    Requested data using Omicron format");
                     break;
             }
         }
     }
 }
        public Client(Socket acceptedListener)
        {
            clientID = clientsCreated;
            clientsCreated++;

            udpClient = new UdpClient();
            handler = acceptedListener;

            clientAddress = handler.RemoteEndPoint.ToString();

            // Parses message from TouchAPI for ready signal
            bytes = new byte[1024];
            int bytesRec = handler.Receive(bytes);
            data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
            data = data.Trim();

            // Checks if TouchAPI client is ready to receive data
            if (data.Contains("data_on"))
            {
                // Parse out the dataPort from the data string
                int beginPort = data.IndexOf(',') + 1;
                dataPort = Convert.ToInt32(data.Substring(beginPort, data.Length - beginPort));

                //Console.WriteLine("Client requests data to be sent on port " + dataPort + ".");

                // Parse client address and remove the port, leaving the IPAddress of client
                clientAddress = clientAddress.Substring(0, clientAddress.IndexOf(':'));
                //Console.WriteLine(clientAddress);
                IPAddress clientIP = IPAddress.Parse(clientAddress);

                // Connect to the client's dataport
                udpClient.Connect(clientIP, dataPort);
                active = true;

                if (data.Contains("omicron_legacy_data_on"))
                {
                    dataFormat = OmicronServer.OutputType.Omicron_Legacy;
                    //Console.WriteLine("   " + clientAddress + " requested Omicron legacy data sent on port " + dataPort);
                }
                else if (data.Contains("omicron_data_on"))
                {
                    dataFormat = OmicronServer.OutputType.Omicron;
                    //Console.WriteLine("   " + clientAddress + " requested Omicron data sent on port " + dataPort);
                }
                else
                {
                    dataFormat = OmicronServer.OutputType.Omicron;
                    //Console.WriteLine("   " + clientAddress + " requested TouchAPI data sent on port " + dataPort);
                }
                data = "";
            }
        }
        public Client(String clientAddr, int dataPrt, OmicronServer.OutputType outputType)
        {
            clientID = clientsCreated;
            clientsCreated++;

            udpClient = new UdpClient();

            // Parse client address and remove the port, leaving the IPAddress of client
            String parsedIP = clientAddr;
            clientAddress = clientAddr;
            dataPort = dataPrt;

            IPAddress clientIP = IPAddress.Parse(parsedIP);
            data = "";

            // Connect to the client's dataport
            udpClient.Connect(clientIP, dataPort);
            active = true;

            switch (outputType)
            {
                case (OmicronServer.OutputType.TacTile):
                    dataFormat = OmicronServer.OutputType.TacTile;
                    break;
                case (OmicronServer.OutputType.Omicron_Legacy):
                    dataFormat = OmicronServer.OutputType.Omicron_Legacy;
                    break;
                case (OmicronServer.OutputType.Omicron):
                    dataFormat = OmicronServer.OutputType.Omicron;
                    break;
            }
        }