Клиент-серверное приложение - C# (180714)

Узнай цену своей работы

Формулировка задачи:

Клиент записывает текст в файл и отправляет его серверу. сервер записывает данный текст в обратном порядке записывает в файл и отправляет клиенту. клиент получает файл считывает результат и выводит на экран. Клиент:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.IO;
  9. namespace клиент
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. { //создание сокета
  15. Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  16. IPAddress adr = Dns.Resolve("localhost").AddressList[0];
  17. // создание конечной точки с указанием параметров соединения
  18. IPEndPoint ipEnd = new IPEndPoint(adr, 8086);
  19. //соединение с сервером
  20. s1.Connect(ipEnd);
  21. Console.WriteLine("Соединение установлено.");
  22.  
  23. string str = null;
  24. {
  25. Console.WriteLine("Введите фразу");
  26. str = Console.ReadLine();
  27. using (FileStream fstream = new FileStream(@"C:\note.txt", FileMode.OpenOrCreate))
  28. {
  29. // преобразуем строку в байты
  30. byte[] array = System.Text.Encoding.Default.GetBytes(str);
  31. // запись массива байтов в файл
  32. fstream.Write(array, 0, array.Length);
  33. Console.WriteLine("Текст записан в файл");
  34. }
  35.  
  36. // буфер для отправляемых данных
  37. byte[] d = Encoding.ASCII.GetBytes(str);
  38. // отправка данных
  39. s1.Send(d);
  40.  
  41. }
  42. Console.WriteLine("Фраза отправлена");
  43. byte[] R = new byte[1024]; // буфер для полученных данных из сети //получение результата
  44. s1.Receive(R);
  45. string textFromFile;
  46. using (FileStream fstream = File.OpenRead(@"C:\note1.txt")) //записать в другой файл и прописать путь сохзранения файла
  47. {
  48. // преобразуем строку в байты
  49. byte[] array = new byte[fstream.Length];
  50. // считываем данные
  51. fstream.Read(array, 0, array.Length);
  52. // декодируем байты в строку
  53. textFromFile = System.Text.Encoding.Default.GetString(array);
  54. Console.WriteLine("Текст из файла: {0}", textFromFile);
  55. }
  56. Console.WriteLine("Результат: {0}", Encoding.ASCII.GetString(R));
  57. Console.ReadLine();
  58. s1.Close();
  59. }
  60. }
  61. }
Сервер:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.IO;
  7. namespace Server1
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. { //создание сокета
  13. Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  14. IPAddress adr = Dns.Resolve("localhost").AddressList[0];
  15. //создание конечной точки с параметрами соединения
  16. IPEndPoint ipEnd = new IPEndPoint(adr, 8086);
  17. Listener.Bind(ipEnd);
  18. // прослушивание запросов о соединении
  19. Listener.Listen(10);
  20. Console.WriteLine("Ожидание соединения...");
  21. Socket s = Listener.Accept();
  22. // буфер для получаемых данных
  23. byte[] bufR = new byte[1024];
  24. string sum; string a;
  25. string textFromFile;
  26. { //получение данных ив сети
  27. s.Receive(bufR);
  28. // преобразование в строку из типа данных байт
  29.  
  30. using (FileStream fstream = File.OpenRead(@"C:\note.txt"))
  31. {
  32. // преобразуем строку в байты
  33. byte[] array = new byte[fstream.Length];
  34. // считываем данные
  35. fstream.Read(array, 0, array.Length);
  36. // декодируем байты в строку
  37. textFromFile = System.Text.Encoding.Default.GetString(array);
  38. Console.WriteLine("Текст из файла: {0}", textFromFile);
  39. }
  40. sum = textFromFile;
  41. a = sum;
  42. }
  43. //буфер для отправляемых данных
  44. string text = a;
  45. char[] letters = text.ToCharArray();
  46. Array.Reverse(letters);
  47. text = String.Concat(letters);
  48.  
  49. // запись в файл
  50. using (FileStream fstream = new FileStream(@"C:\note.txt", FileMode.OpenOrCreate))
  51. {
  52. // преобразуем строку в байты
  53. byte[] bufS = Encoding.ASCII.GetBytes(text.ToString());
  54. // запись массива байтов в файл
  55. fstream.Write(bufS, 0, bufS.Length);
  56. Console.WriteLine("Текст записан в файл");
  57.  
  58. //отправка результата
  59. s.Send(bufS);
  60. Console.WriteLine("Результат :{0} отправлен", text);
  61. Console.ReadLine();
  62. s.Close();
  63. }
  64. }
  65. }
  66. }
Клиент записывает текст в файл и вроде как его отправляет. сервер в свою очередь переворачивает текст. но при отправке результата клиенту происходит ошибка

Решение задачи: «Клиент-серверное приложение»

textual
Листинг программы
  1. byte[] R = new byte[1024]; // буфер для полученных данных из сети //получение результата
  2. s1.Receive(R);
  3. string textFromFile;
  4. using (FileStream fstream = File.Create(@"C:\note1.txt"))   //записать в другой файл и прописать путь сохзранения файла
  5. {
  6.     // преобразуем строку в байты
  7. //    byte[] array = new byte[fstream.Length];
  8.     // считываем данные
  9.     fstream.Write(R, 0, R.Length);
  10.     // декодируем байты в строку
  11.     textFromFile = System.Text.Encoding.Default.GetString(R);
  12.     Console.WriteLine("Текст из файла: {0}", textFromFile);
  13. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы