コード例 #1
0
ファイル: ClientThread.cs プロジェクト: axuboi/SocketTest2
        // Ajetaan omassa säikeessään
        public void ServeClient()
        {
            // Avataan yhteydet
            // Avataan streamit
            SocketUtilities.SocketUtilityClass su =
                new SocketUtilities.SocketUtilityClass(client);

            su.Open();

            bool jatka = true;

            while (jatka)
            {
                // Viimeisimmän komennon vastaanottamisen ajankohta:
                DateTime timeLastCommandReceived = DateTime.Now;

                // Tarkistetaan, onko dataa syötettäväksi
                if (su.DataAvailable())
                {
                    // Luetaan ja käsitellään komennot
                    string command = su.ReadMessage();
                    string answer  = "";

                    switch (command)
                    {
                    case SocketUtilities.Commands.TIME:
                        answer = DateTime.Now.ToString();
                        break;

                    case SocketUtilities.Commands.NUMBER_OF_CLIENTS:
                        answer = "1";     // 1000
                        break;

                    case SocketUtilities.Commands.QUIT:
                        answer = "lopetus";
                        jatka  = false;
                        break;
                    }
                    su.WriteMessage(answer);
                    Console.WriteLine(answer);
                }
                else // if (su.DataAvailable())
                {
                    // Lopetetaan, jos viimeisestä komennosta on kulunut yli minuutti:
                    DateTime timeNow = DateTime.Now;
                    TimeSpan erotus  = timeNow - timeLastCommandReceived;

                    if (erotus.TotalSeconds > 60)
                    {
                        jatka = false;
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
            }
            // Suljetaan yhteydet
            su.Close();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            int       port   = 8221;
            TcpClient client = new TcpClient("localhost", port);

            SocketUtilities.SocketUtilityClass su =
                new SocketUtilities.SocketUtilityClass(client);

            su.Open();

            string vastaus = "";

            while (true)
            {
                Console.WriteLine("Anna komento");
                string komento = Console.ReadLine();

                // lähetetään komento
                su.WriteMessage(komento);

                // odotetaan vastausta
                vastaus = su.ReadMessage();
                Console.WriteLine(vastaus);
                if (komento == SocketUtilities.Commands.QUIT)
                {
                    break;
                }
            }

            su.Close();

            Console.ReadKey();
        }
コード例 #3
0
        // ajetaan omassa säikeessään
        public void ServeClient()
        {
            // avataan yhteydet
            // avataan streamit
            SocketUtilities.SocketUtilityClass su = new SocketUtilities.SocketUtilityClass(client);

            su.Open();


            bool jatka = true;

            // luetaan ja käsitellään komennot
            while (jatka)
            {
                DateTime viimeinenKomento = DateTime.Now;

                if (su.DataAvailable())
                {
                    string komento = su.ReadMessage();

                    string vastaus = "";
                    // päivitetään aika
                    switch (komento)
                    {
                    case SocketUtilities.Commands.TIME:
                        vastaus = DateTime.Now.ToString();
                        break;

                    case SocketUtilities.Commands.NUMBER_OF_CLIENTS:
                        vastaus = "1";     // TODO
                        break;

                    case SocketUtilities.Commands.QUIT:
                        vastaus = "lopetus";
                        break;
                    }
                    su.WriteMessage(vastaus);
                    Console.WriteLine(vastaus);
                }
                else
                {
                    // lopetetaan jos viimeisestä komennosta on kulunut yli min
                    DateTime nyt    = DateTime.Now;
                    TimeSpan erotus = nyt - viimeinenKomento;
                    if (erotus.TotalSeconds > 60)
                    {
                        jatka = false;
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
            }

            // suljetaan yhteydet
            su.Close();
        }