protected override void BeginDataTransmission(NetworkStream stream) { byte[] buffer = new byte[Buffer_size]; while (true) { tcpClient.GetStream().Write(instr, 0, instr.Length); //Odbieranie wiadomości tcpClient.GetStream().Read(buffer); string text = Encoding.UTF8.GetString(buffer).Replace("\n", "").Replace("\0", ""); Console.Write(text); //Rozpoznawanie otrzymanego komunikatu i odpowiedzi if (text == "shutdown") { Console.WriteLine("Zamykam serwer\n"); tcpClient.Close(); shutdown = true; break; } else if (text == "quit") { Console.WriteLine("Rozłączam\n"); tcpClient.Close(); break; } else if (text == "suchar") { Console.WriteLine("Potwierdzam\n"); String sucharek = suchy.genJoke(); byte[] pozytyw = Encoding.ASCII.GetBytes(sucharek); tcpClient.GetStream().Write(pozytyw, 0, pozytyw.Length); } else { Console.WriteLine("Odrzucam\n"); tcpClient.GetStream().Write(bytes, 0, bytes.Length); } } }
protected override void BeginDataTransmission(NetworkStream stream) { char[] trim = { (char)0x0 }; byte[] buffer = new byte[Buffer_size]; //stream = tcpClient.GetStream(); //suchy.saveToFile(); while (true) { try { stream.Write(instr, 0, instr.Length); } catch (Exception e) { Console.WriteLine(e); } //Odbieranie wiadomości //stream.Read(buffer,0,buffer.Length); //Array.Clear(buffer, 0, buffer.Length); //string text = Encoding.UTF8.GetString(buffer).Replace("\n", "").Replace("\0", ""); //Console.Write(text); int dlugosc = stream.Read(buffer, 0, buffer.Length); if (Encoding.ASCII.GetString(buffer, 0, dlugosc) == "\r\n") { stream.Read(buffer, 0, buffer.Length); } string text = Encoding.ASCII.GetString(buffer).Trim(trim); Array.Clear(buffer, 0, buffer.Length); Console.WriteLine(text); //Rozpoznawanie otrzymanego komunikatu i odpowiedzi //dodawanie suchara if (text == "nowy") { Console.WriteLine("Dodawanie suchara\n"); stream.Write(dod, 0, dod.Length); dlugosc = stream.Read(buffer, 0, buffer.Length); if (Encoding.ASCII.GetString(buffer, 0, dlugosc) == "\r\n") { stream.Read(buffer, 0, buffer.Length); } string nowy = Encoding.ASCII.GetString(buffer).Trim(trim); Array.Clear(buffer, 0, buffer.Length); Console.WriteLine(nowy); suchy.addJoke(nowy); } else if (text == "quit") //rozłączanie { Console.WriteLine("Rozłączam\n"); try { stream.Close(); } catch (Exception e) { Console.WriteLine(e); } break; } else if (text == "suchar") //podawanie suchara { Console.WriteLine("Potwierdzam\n"); String sucharek = suchy.genJoke(); byte[] pozytyw = Encoding.ASCII.GetBytes(sucharek); stream.Write(pozytyw, 0, pozytyw.Length); } else { Console.WriteLine("Odrzucam\n"); stream.Write(bytes, 0, bytes.Length); } } }
/// <summary> /// Metoda Run obsługująca łączenie klienta i pętlę działania serwera /// </summary> public void Run() { //Setup serwera TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 8008); server.Start(); Console.WriteLine("Odpalam server\n"); //Komunikaty i obiekt sucharów string negatyw = "Ja tylko serwuje suchary\n"; string instrukcja = "\n\n\"suchar\" wysyla suchara, \"quit\" rozlacza, \"shutdown\" zamyka serwer\n"; byte[] instr = Encoding.ASCII.GetBytes(instrukcja); byte[] bytes = Encoding.ASCII.GetBytes(negatyw); Joke suchy = new Joke(); bool shutdown = false; //Pętla łączenia while (shutdown == false) { //Łączenie z klientem TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Polaczono\n"); //Pętla serwera while (true) { client.GetStream().Write(instr, 0, instr.Length); //Odbieranie wiadomości byte[] buffer = new byte[1024]; client.GetStream().Read(buffer); string text = Encoding.UTF8.GetString(buffer).Replace("\n", "").Replace("\0", ""); Console.Write(text); //Rozpoznawanie otrzymanego komunikatu i odpowiedzi if (text == "shutdown") { Console.WriteLine("Zamykam serwer\n"); client.Close(); shutdown = true; break; } else if (text == "quit") { Console.WriteLine("Rozłączam\n"); client.Close(); break; } else if (text == "suchar") { Console.WriteLine("Potwierdzam\n"); String sucharek = suchy.genJoke(); byte[] pozytyw = Encoding.ASCII.GetBytes(sucharek); client.GetStream().Write(pozytyw, 0, pozytyw.Length); } else { Console.WriteLine("Odrzucam\n"); client.GetStream().Write(bytes, 0, bytes.Length); } } } }