Клиент-серверное приложение - 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);
}