Пример #1
0
        /// <summary>
        /// Klasa testująca poprawność biblioteki klas XMLmsg
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // stworzenie list pomocnicznych trzymających wartości własności obiektów klasy Msg w postaci stringa
            List <string> nwLista  = new List <string>();
            List <string> nnwLista = new List <string>();
            // stworzenie przykładowego obiektu Msg
            Msg nw = new Msg()
            {
                Komenda   = Command.Login.ToString(),
                Nadawca   = "J",
                Odbiorca  = "T",
                Wiadomosc = "PIWO"
            };

            // wypisanie pierwszego obiektu
            Console.WriteLine("Jaka komenda: {0}, kto wysyła: {1}, kto odbiera: {2}, jaka tresc: {3}", nw.Komenda, nw.Nadawca, nw.Odbiorca, nw.Wiadomosc);
            MsgConverter mConv = new MsgConverter();

            // konwersja pierwszego obiektu do bytów
            byte[] bajty = mConv.doByte(nw);
            // odkodowanie pierwszego obiektu i stworzenie identycznego drugiego
            Msg nnw = mConv.doMsg(bajty);

            //wypisanie drugiego obiektu
            Console.WriteLine("Jaka komenda: {0}, kto wysyła: {1}, kto odbiera: {2}, jaka tresc: {3}", nnw.Komenda, nnw.Nadawca, nnw.Odbiorca, nnw.Wiadomosc);

            var s = nw;
            // w foreachu wpisanie jako stringi wartości wszystkich własności obiektu pierwszego
            string temp;

            foreach (var p in s.GetType().GetProperties().Where(p => p.GetGetMethod().GetParameters().Count() == 0))
            {
                temp = p.GetValue(s, null) != null?p.GetValue(s, null).ToString() : "null";

                nwLista.Add(temp);
                //Console.WriteLine(p.GetValue(s, null));
            }
            // w foreachu wpisanie jako stringi wartości wszystkich własności obiektu drugiego
            s = nnw;
            foreach (var p in s.GetType().GetProperties().Where(p => p.GetGetMethod().GetParameters().Count() == 0))
            {
                temp = p.GetValue(s, null) != null?p.GetValue(s, null).ToString() : "null";

                nnwLista.Add(temp);
            }


            // porownanie obydwu list, jeżeli wszystkie wartości są identyczne oba obiekty są identyczne
            string str = czyIdentyczne(nwLista, nnwLista) ? "TEST POPRAWNY - OBIE KLASY CHYBA SĄ IDENTYCZNE!" : "TEST BŁĘDNY!";

            Console.WriteLine("{0}", str);
            Console.ReadKey(true);
        }
Пример #2
0
        private void doChat()
        {
            int requestCount = 0;

            byte[] bytesFrom = new byte[10025];
            string rCount    = null;

            requestCount = 0;
            Msg msg;

            while ((true))
            {
                try
                {
                    requestCount = requestCount + 1;
                    // wyzerowanie tablicy byte[]
                    bytesFrom = new byte[10025];
                    NetworkStream networkStream;
                    try
                    {
                        networkStream = clientSocket.GetStream();
                        networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
                    }
                    catch (Exception)
                    {
                        break;
                    }

                    msg = mConv.doMsg(bytesFrom);
                    // przypisanie do wiadomości ID serwera który ją odebrał od clienta
                    msg.IdSerwera = Program.serverID;
                    // przypisanie do wiadomości czasu z serwera
                    msg.Czas        = DateTime.Now.ToString();
                    msg.GuidNadawca = clGuid;
                    Console.WriteLine("From client - " + clNo + " to client - " + msg.Odbiorca + " msg: " + msg.Wiadomosc);
                    rCount = Convert.ToString(requestCount);

                    Program.processingNewMessage(msg);
                    //Program.broadcast(msg);//, clNo);
                }
                catch (Exception ex)
                {
                    //Console.WriteLine(ex.ToString());
                    break;
                }
            }//end while
            clientSocket.Close();
            clientsList.Remove(clientsList.Find(r => r.nickName == clNo));
            Console.WriteLine("Rozłączono klienta");
        } //end doChat
Пример #3
0
        /// <summary>
        /// metoda działająca w nowym wątku - żeby nie blokowała reszty aplikacji
        /// za zadanie ma odbierać wiadomości od serwera (dlatego działa w pętli while(true)
        /// </summary>
        private void getMessage()
        {
            Msg msg;

            while (true)
            {
                serverStream = clientSocket.GetStream();
                int    buffSize = 0;
                byte[] inStream = new byte[10025];
                buffSize = clientSocket.ReceiveBufferSize;
                serverStream.Read(inStream, 0, buffSize);
                msg = mConv.doMsg(inStream);
                // przekazanie wiadomości od serwera do nowej metody - żeby nie zaśmiecać kodem metody getMessage
                processingNewMessage(msg);
            }
        }
Пример #4
0
        /// <summary>
        /// Main ;)
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            IPAddress ip;

            // adres na którym serwer będzie nasłuchiwał (zawsze 127.0.0.1), tzn będzie zbierał cały ruch
            ip = IPAddress.Parse("127.0.0.1");
            // uruchomienie serwera nasłuchu TCP
            // Pakiet TCP wchodzi do baru:
            // -Poproszę piwo.
            // -Piwo ?
            // -Tak, piwo.
            TcpListener serverSocket = new TcpListener(ip, 8888);
            TcpClient   clientSocket = default(TcpClient);
            User        nowyUser;
            int         counter = 0;

            // start serwera
            serverSocket.Start();
            Console.WriteLine("Chat Server Started ....");
            counter = 0;
            // pętla przyjmująca nowych klientów
            while ((true))
            {
                counter += 1;
                // do TcpListener'a zgłasza się nowy TcpClient
                clientSocket = serverSocket.AcceptTcpClient();
                // tablica bajtów z wiadomoscią
                byte[] bytesFrom = new byte[10025];
                // stworzenie streamu od klienta
                NetworkStream networkStream = clientSocket.GetStream();
                // odczytanie wiadomości (czytanie do bytesFrom, streamu o długości (int)clientSocket.ReceiveBufferSize )
                networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
                // konwersja bajtów do obiektu z wiadomością
                Msg msg = mConv.doMsg(bytesFrom);
                // stworzenie obiektu Usera trzymającego nickName oraz Socketa
                nowyUser = new User()
                {
                    nickName     = msg.Nadawca,
                    clientSocket = clientSocket
                };
                // przypisanie GUID nowegoUsera do wiadomosci
                msg.GuidNadawca = nowyUser.GUID;
                // dodanie Usera do Listy userów aktywnych na tym serwerze
                clientsList.Add(nowyUser);
                Console.WriteLine(msg.Nadawca + " Try to login to server ");
                processingNewMessage(msg);
                // utworzenie obiektu trzymającego komunikację Usera z serwerem
                handleClinet client = new handleClinet();
                // uruchomienie clienta (wysłanie Socketa, danych, (adresu) Listy pozostałych klientów
                client.startClient(clientSocket, msg.Nadawca, msg.GuidNadawca, clientsList);
                if (wylaczServer == true)
                {
                    break;
                }
            }

            clientSocket.Close();
            serverSocket.Stop();
            Console.WriteLine("exit");
            Console.ReadLine();
        } // end Main metod