Клиент-серверное приложение - C# (180714)
Формулировка задачи:
Клиент записывает текст в файл и отправляет его серверу. сервер записывает данный текст в обратном порядке записывает в файл и отправляет клиенту. клиент получает файл считывает результат и выводит на экран.
Клиент:
Сервер:
Клиент записывает текст в файл и вроде как его отправляет. сервер в свою очередь переворачивает текст. но при отправке результата клиенту происходит ошибка
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.IO; namespace клиент { class Program { static void Main(string[] args) { //создание сокета Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress adr = Dns.Resolve("localhost").AddressList[0]; // создание конечной точки с указанием параметров соединения IPEndPoint ipEnd = new IPEndPoint(adr, 8086); //соединение с сервером s1.Connect(ipEnd); Console.WriteLine("Соединение установлено."); string str = null; { Console.WriteLine("Введите фразу"); str = Console.ReadLine(); using (FileStream fstream = new FileStream(@"C:\note.txt", FileMode.OpenOrCreate)) { // преобразуем строку в байты byte[] array = System.Text.Encoding.Default.GetBytes(str); // запись массива байтов в файл fstream.Write(array, 0, array.Length); Console.WriteLine("Текст записан в файл"); } // буфер для отправляемых данных byte[] d = Encoding.ASCII.GetBytes(str); // отправка данных s1.Send(d); } Console.WriteLine("Фраза отправлена"); byte[] R = new byte[1024]; // буфер для полученных данных из сети //получение результата s1.Receive(R); string textFromFile; using (FileStream fstream = File.OpenRead(@"C:\note1.txt")) //записать в другой файл и прописать путь сохзранения файла { // преобразуем строку в байты byte[] array = new byte[fstream.Length]; // считываем данные fstream.Read(array, 0, array.Length); // декодируем байты в строку textFromFile = System.Text.Encoding.Default.GetString(array); Console.WriteLine("Текст из файла: {0}", textFromFile); } Console.WriteLine("Результат: {0}", Encoding.ASCII.GetString(R)); Console.ReadLine(); s1.Close(); } } }
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; namespace Server1 { class Program { static void Main(string[] args) { //создание сокета Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress adr = Dns.Resolve("localhost").AddressList[0]; //создание конечной точки с параметрами соединения IPEndPoint ipEnd = new IPEndPoint(adr, 8086); Listener.Bind(ipEnd); // прослушивание запросов о соединении Listener.Listen(10); Console.WriteLine("Ожидание соединения..."); Socket s = Listener.Accept(); // буфер для получаемых данных byte[] bufR = new byte[1024]; string sum; string a; string textFromFile; { //получение данных ив сети s.Receive(bufR); // преобразование в строку из типа данных байт using (FileStream fstream = File.OpenRead(@"C:\note.txt")) { // преобразуем строку в байты byte[] array = new byte[fstream.Length]; // считываем данные fstream.Read(array, 0, array.Length); // декодируем байты в строку textFromFile = System.Text.Encoding.Default.GetString(array); Console.WriteLine("Текст из файла: {0}", textFromFile); } sum = textFromFile; a = sum; } //буфер для отправляемых данных string text = a; char[] letters = text.ToCharArray(); Array.Reverse(letters); text = String.Concat(letters); // запись в файл using (FileStream fstream = new FileStream(@"C:\note.txt", FileMode.OpenOrCreate)) { // преобразуем строку в байты byte[] bufS = Encoding.ASCII.GetBytes(text.ToString()); // запись массива байтов в файл fstream.Write(bufS, 0, bufS.Length); Console.WriteLine("Текст записан в файл"); //отправка результата s.Send(bufS); Console.WriteLine("Результат :{0} отправлен", text); Console.ReadLine(); s.Close(); } } } }
Решение задачи: «Клиент-серверное приложение»
textual
Листинг программы
byte[] R = new byte[1024]; // буфер для полученных данных из сети //получение результата s1.Receive(R); string textFromFile; using (FileStream fstream = File.Create(@"C:\note1.txt")) //записать в другой файл и прописать путь сохзранения файла { // преобразуем строку в байты // byte[] array = new byte[fstream.Length]; // считываем данные fstream.Write(R, 0, R.Length); // декодируем байты в строку textFromFile = System.Text.Encoding.Default.GetString(R); Console.WriteLine("Текст из файла: {0}", textFromFile); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д