/// <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); }
private void buttonConnect_Click(object sender, RoutedEventArgs e) { try { IPAddress ip = IPAddress.Parse("127.0.0.1"); clientSocket.Connect(ip, 8888); serverStream = clientSocket.GetStream(); readData = "Łączenie z serwerem ..."; // message() czyli "wypisanie na ekran" stringa readData - metoda później uruchamiana spełnia to samo założenie message(); } catch (Exception) { readData = "BŁĄD w połączeniu z serwerem ..."; message(); return; } // tworzenie obiektu Msg (wiadomości) do wysłania przez Socketa Msg outMsg = new Msg() { Komenda = Command.Login.ToString(), Nadawca = tBoxNickName.Text, Odbiorca = tBoxPassword.Text }; // zamiana obiektu do XMLa a później do tablicy byte[] byte[] outStream = mConv.doByte(outMsg); // wysłanie outStreama w kosmos (powinien złapać dane serwer) serverStream.Write(outStream, 0, outStream.Length); serverStream.Flush(); // wystartowanie metody getMessage (zbiera odpowiedzi od serwera) w nowym wątku, ctThread = new Thread(getMessage); // wystartkowanie nowego wątku ctThread.Start(); }
public static void broadcast(Msg msg)//, string uName)//, bool flag) { bool WyslaneDoOdbiorcy = false; bool WyslaneDoNadawcy = false; foreach (User Item in clientsList) { if (Item.nickName == msg.Odbiorca || Item.GUID == msg.GuidNadawca) { TcpClient broadcastSocket; broadcastSocket = (TcpClient)Item.clientSocket;//.Value; NetworkStream broadcastStream = broadcastSocket.GetStream(); Byte[] broadcastBytes = null; if (Item.zalogowany == true) { if (Item.nickName == msg.Odbiorca) { WyslaneDoOdbiorcy = true; } if (Item.GUID == msg.GuidNadawca) { WyslaneDoNadawcy = true; } broadcastBytes = mConv.doByte(msg); broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length); broadcastStream.Flush(); } } //end if (Item.nickName == msg.Odbiorca || Item.nickName == msg.Nadawca) } //end foreach if (!WyslaneDoNadawcy) { //czynności związane z niewysłaniem wiadomości do nadawcy (czy jakiekolwiek?) } if (WyslaneDoOdbiorcy) { // wysłać wiadomość do nadawcy, że wiadomość została dostarczona do odbiorcy! } else { // wysłać wiadomość do pozostałych serwerów, // jeżeli na żadnym nie została doręczona wiadomość wysłać do serwera BackUpu } } //end broadcast function