コード例 #1
0
        //uzyskanie ID od servera
        private static Protocol GetID()
        {
            int otrzymane = 0;

            Console.WriteLine("Wysyłam prośbę o przydzielenie ID");
            Protocol paczkaID = new Protocol("ID", "przydzielID", DateTime.Now.ToLongTimeString(), "0");

            SendString(paczkaID.Pakuj1());
            Thread.Sleep(100);
            SendString(paczkaID.Pakuj2());
            Boolean x        = false;
            var     buffer   = new byte[2048];
            int     received = ClientSocket.Receive(buffer, SocketFlags.None);

            if (received != 0)
            {
                otrzymane = received;
                x         = true;
            }

            var data = new byte[otrzymane];

            Array.Copy(buffer, data, otrzymane);
            string text = Encoding.ASCII.GetString(data);

            if (paczka.GetNrS(text) == "1")
            {
                paczka.GetMessage1(text);
            }
            else if (paczka.GetNrS(text) == "2")
            {
                Console.WriteLine(paczka.GetMessage2(text));
            }
            Boolean y = false;

            int received2 = ClientSocket.Receive(buffer, SocketFlags.None);

            if (received2 != 0)
            {
                otrzymane = received2;
                y         = true;
            }

            var data2 = new byte[otrzymane];

            Array.Copy(buffer, data2, otrzymane);
            string text2 = Encoding.ASCII.GetString(data2);

            if (paczka.GetNrS(text2) == "1")
            {
                paczka.GetMessage1(text2);
            }
            else if (paczka.GetNrS(text2) == "2")
            {
                string xyz = paczka.GetMessage2(text2);
            }
            Console.WriteLine("moje ID: " + paczka.ID);
            return(paczka);
        }
コード例 #2
0
        private static void PrzydzielID(Socket socket)
        {
            string   n   = ids[index].ToString();
            Protocol aaa = new Protocol("ID", "Przydzielilem_ID", DateTime.Now.ToLongTimeString(), n);

            index++;
            byte[] data = Encoding.ASCII.GetBytes(aaa.Pakuj1());
            socket.Send(data);
            Thread.Sleep(100);
            byte[] data2 = Encoding.ASCII.GetBytes(aaa.Pakuj2());
            socket.Send(data2);
        }
コード例 #3
0
        //wyslanie liczby podanej przez uzytownika do servera
        private static void WysylanieLiczby()
        {
            Console.Write("> ");
            string n = Console.ReadLine();

            paczka.Operation = "Gra";
            paczka.Message   = n;
            paczka.TS        = DateTime.Now.ToLongTimeString();
            SendString(paczka.Pakuj1());
            Thread.Sleep(100);
            SendString(paczka.Pakuj2());
            if (n == "wyjscie")
            {
                Exit();
            }
        }
コード例 #4
0
        public static void wygrana(Socket socket)
        {
            //foreach (Socket socket in clientSockets)
            //{
            Protocol aaa = new Protocol("odpowiedz", "Liczba zostala odgadnieta! Koniec gry ", DateTime.Now.ToLongTimeString());

            byte[] data = Encoding.ASCII.GetBytes(aaa.Pakuj1());
            socket.Send(data);
            byte[] data2 = Encoding.ASCII.GetBytes(aaa.Pakuj2());
            socket.Send(data2);
            //socket.Shutdown(SocketShutdown.Both);
            //socket.Close();

            //serverSocket.Close();
            //}
        }
コード例 #5
0
        private static void ReceiveCallback(IAsyncResult AR)
        {
            Socket current  = (Socket)AR.AsyncState;
            int    received = 0;

            try
            {
                received = current.EndReceive(AR);
            }
            catch (SocketException)
            {
                Console.WriteLine("Klient zerwal polaczenie");
                current.Close();
                clientSockets.Remove(current);
                return;
            }
            byte[] recBuf1 = new byte[received];
            Array.Copy(buffer, recBuf1, received);
            string   text1 = Encoding.ASCII.GetString(recBuf1);
            Protocol aa    = new Protocol();
            string   msg   = "";

            if (aa.GetNrS(text1) == "1")
            {
                aa.GetMessage1(text1);
            }
            else if (aa.GetNrS(text1) == "2")
            {
                msg = aa.GetMessage2(text1);
            }

            int     otrzymane = 0;
            var     buffer2   = new byte[2048];
            Boolean y         = false;

            do
            {
                int received2 = current.Receive(buffer2, SocketFlags.None);
                if (received2 != 0)
                {
                    otrzymane = received2;
                    y         = true;
                }
            } while (!y);

            byte[] recBuf2 = new byte[otrzymane];
            Array.Copy(buffer2, recBuf2, otrzymane);
            string text2 = Encoding.ASCII.GetString(recBuf2);

            if (aa.GetNrS(text2) == "1")
            {
                aa.GetMessage1(text2);
            }
            else if (aa.GetNrS(text2) == "2")
            {
                msg = aa.GetMessage2(text2);
            }
            if (koniec)
            {
                Protocol a     = new Protocol("odpowiedz", "Ktos inny zgadl liczby, przegrales", DateTime.Now.ToLongTimeString(), aa.ID);
                byte[]   data1 = Encoding.ASCII.GetBytes(a.Pakuj1());
                current.Send(data1);
                Thread.Sleep(100);
                byte[] data2 = Encoding.ASCII.GetBytes(a.Pakuj2());
                current.Send(data2);
                return;
            }
            Console.WriteLine("Klient: " + msg);


            if (msg == "przydzielID")
            {
                PrzydzielID(current);
            }
            else if (msg.ToLower() == guess_num)
            {
                Console.WriteLine("Gracz trafil liczbe");
                koniec = true;
                wygrana(current);
            }
            else if (msg.ToLower() == "wyjscie")
            {
                current.Shutdown(SocketShutdown.Both);
                current.Close();
                clientSockets.Remove(current);
                Console.WriteLine("Klient sie rozlaczyl");
                return;
            }
            else
            {
                Console.WriteLine("Gracz nie trafil liczby");
                DateTime tempTime = DateTime.Now;
                Protocol a        = new Protocol("odpowiedz", "Bledna liczba", DateTime.Now.ToLongTimeString(), aa.ID);
                byte[]   data1    = Encoding.ASCII.GetBytes(a.Pakuj1());
                current.Send(data1);
                Thread.Sleep(100);
                byte[] data2 = Encoding.ASCII.GetBytes(a.Pakuj2());
                current.Send(data2);
                Console.WriteLine("Wyslano powiadomienie, " + DateTime.Now.ToLongTimeString());
            }
            if (!koniec)
            {
                current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
            }
        }