private static void Main(string[] args) { Server s = new Server(); // utworzenie obiektu serwera try { Console.WriteLine("Server"); // informacja o utworzeniu obiektu serwera Console.WriteLine("Waiting for connection"); s.CreateListener(); // przypisanie portu (27015) while (true) { s.StartListen(); // rozpoczenie nasluchiwania s.AccecptClient(); // akceptacja klienta, ktory probuje nawiazac polaczenie Console.WriteLine("Client connected"); // informacja o poprawnym nawiazaniu polaczenia Segment seg; s.CreateStream(); // utworzenie strumienia s.buffer = new byte[16]; // ustalenie wielkosci bufora string ErrorInput; // komunikaty bledow s.Read(ref s.buffer); seg = new Segment(s.buffer); Console.WriteLine("ID otrzymane:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(s.buffer), seg._ByteArray.Length); // wyswietlenie segmentu s.buffer = s.IDRequest(); //tworzenie odpowiedzi na przydzielenie id sesji s.Write(s.IDRequest()); seg = new Segment(s.buffer); Console.WriteLine("ID wyslane:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(s.buffer), seg._ByteArray.Length); // wyswietlenie segmentu while (true) { s.buffer = new byte[16]; //reset buffera s.Read(ref s.buffer); // odczytanie wiadomosci seg = new Segment(s.buffer); ErrorInput = s.CheckExit(seg); // sprawdzanie, czy otrzymany segment nie zawiera komunikatu bledu if (ErrorInput != "") { Console.WriteLine(ErrorInput); break; } Console.WriteLine("Segment otrzymany:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(s.buffer), seg._ByteArray.Length); // wyswietlenie segmentu seg = s.MakeAnswer(s.Calculate(seg)); s.buffer = seg._ByteArray; s.Write(s.buffer); //wyslanie odpowiedzi Console.WriteLine("Segment wysłany:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(s.buffer), seg._ByteArray.Length); // wyswietlenie segmentu //Console.WriteLine("Długość {0}", seg._bitAR.Length); } s.Exit(); // bezpieczne zakonczenie polaczenia } } catch (Exception e) { Console.WriteLine(e.Message); s.Exit(); // awaryjne zakonczenie polaczenia } Console.ReadKey(); // zamykanie aplikacji przez wcisniecie dowolnego przycisku }
private static void Main(string[] args) // metoda do sprawdzania dzialania klienta { Client c = new Client(); // utworzenie obiektu klienta (bezargumentowo do testow) try { Console.WriteLine("Client"); // informacja o utworzeniu obiektu klienta c.Createclient(); // utworzenie klienta, port 27015 c.CreateStream(); // utworzenie strumienia z serwerem Console.WriteLine("Connected"); // informacja o polaczeniu c.buffer = c.IDRequest(); c.Write(c.buffer); Segment seg = new Segment(c.buffer); Console.WriteLine("Żądanie ID wysłane:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(c.buffer), seg._ByteArray.Length); // wyswietlenie segmentu c.buffer = new byte[16]; c.Read(ref c.buffer); seg = new Segment(c.buffer); Console.WriteLine("ID otrzymane:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(c.buffer), seg._ByteArray.Length); // wyswietlenie segmentu string[] UserInput; //wczytanie danych do wyslania while (true) { UserInput = ReadUserInput(); seg = new Segment(UserInput); c.buffer = seg._ByteArray; c.Write(c.buffer); // wysylanie if (UserInput[0] == "exit") { Console.WriteLine("EXIT!"); break; } Console.WriteLine("Segment wysłany:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(c.buffer), seg._ByteArray.Length); // wyswietlenie segmentu c.buffer = new byte[16]; c.Read(ref c.buffer); // odbieranie seg = new Segment(c.buffer); Console.WriteLine("Segment otrzymany:\n{0}\n{1}", seg.ReadSegment(), BufferUtilites.ReadBuffer(c.buffer), seg._ByteArray.Length); // wyswietlenie segmentu switch (c.ReadAnswer(seg)) // wyswietlenie odpowiedzi od serwera { case -2: Console.WriteLine("OVERFLOW"); break; case -3: Console.WriteLine("NOTALLOWED"); break; default: Console.WriteLine("Serwer: {0}", c.ReadAnswer(seg)); // poprawna odpowiedz break; } } c.Exit(); // bezpieczne zakonczenie polaczenia } catch (Exception e) { Console.WriteLine(e.Message); string[] UserError = new string[3]; UserError[0] = "exit"; UserError[1] = "1"; // komunikat bledu UserError[2] = "1"; // komunikat bledu Segment segError = new Segment(UserError); c.buffer = segError._ByteArray; c.Write(c.buffer); // wysylanie Console.WriteLine("ERROR EXIT!"); c.Exit(); // awaryjne zakonczenie polaczenia } Console.ReadKey(); // zamykanie aplikacji przez wcisniecie dowolnego przycisku }