public void start()
        {
            server.Start();
            client    = server.AcceptTcpClient();
            netStream = client.GetStream();

            signal = Convert.ToByte(netStream.ReadByte());
            if (signal == Signal.LIST_REQUEST)                          //if client send request for list
            {
                foreach (Item item in database)                         //send each item in db to client
                {
                    netStream.WriteByte(Signal.LIST_SEND_MORE);         //client continue receiving

                    string data = item.ToString();
                    dataSend = Encoding.ASCII.GetBytes(data);
                    netStream.Write(dataSend, 0, data.Length);
                }
            }
            netStream.WriteByte(Signal.LIST_SEND_FIN);                          //signal client finished sending list

            signal = Convert.ToByte(netStream.ReadByte());
            if (signal == Signal.ORDER_RTS)
            {
                signal = Convert.ToByte(netStream.ReadByte());
                while (signal != Signal.ORDER_SEND_FIN)
                {
                    if (signal == Signal.ORDER_SEND_MORE)
                    {
                        dataSize = netStream.Read(dataReceive, 0, BUFFER_SIZE);
                        string data = Encoding.ASCII.GetString(dataReceive, 0, dataSize);
                        order.Add(Item.GetObject(data));
                    }
                    signal = Convert.ToByte(netStream.ReadByte());
                }
            }

            if (signal == Signal.PAYMENT_REQUEST)
            {
                int totalPayment = 0;
                foreach (Item item in order)
                {
                    totalPayment += database.Where(i => i.Id == item.Id).First().Price *item.Stock;
                }

                dataSend = BitConverter.GetBytes(totalPayment);
                netStream.Write(dataSend, 0, sizeof(int));
            }
        }