Файл: Отчет лабораторной работы Создание клиентсерверного приложения Протокол.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 67

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Отчет лабораторной работы № 2.Создание клиент-серверного приложения «Протокол».Задание. Создать клиент-серверное приложение со следующим функционалом:

  1. Клиент подключается к серверу, обменивается с ним сообщениями и отключается по кодовому слову (задать самостоятельно). В это время остальные клиенты ждут своей очереди.

  2. После завершения обслуживания одного клиента, сервер принимает следующего клиента.
Описание работыВ ходе работы были написаны и отлажены два приложения на языке C#: клиент и сервер. Клиент и сервер обмениваются сообщениями с помощью протокола TCP/IP. На рисунках 1-3 показано работы сервера и двух клиентов, два клиента отправляют сообщения серверу, по очереди, сервер не получит сообщение от второго клиента пока клиент первый не закроет соединение с сервером.Рисунок 1 Рисунок 2Рисунок 3Исходный код клиента:// Клиентusing System;using System.Net.Sockets;using System.Text;class Program{static void Main(string[] args){byte[] bytes = new byte[1024];// Установка IP-адреса и порта сервераstring ipAddress = "127.0.0.1";int port = 8080;// Создание объекта TcpClientTcpClient client = new TcpClient(ipAddress, port);// Получение потока для обмена сообщениями с серверомNetworkStream stream = client.GetStream();string message = "";while (message != "exit"){Console.Write("Введите сообщение: ");message = Console.ReadLine();// Отправка сообщения серверуbyte[] msg = Encoding.UTF8.GetBytes(message);stream.Write(msg, 0, msg.Length);Console.WriteLine("Сообщение отправлено: {0}", message);// Получение сообщения от сервераint i = stream.Read(bytes, 0, bytes.Length);string data = Encoding.UTF8.GetString(bytes, 0, i);Console.WriteLine("Получено сообщение: {0}", data);}// Закрытие соединения с серверомclient.Close();Console.WriteLine("Соединение закрыто");Console.ReadLine();}}Исходный код сервера:using System;using System.Net;using System.Net.Sockets;using System.Text;class Program{static void Main(string[] args){byte[] bytes = new byte[1024];// Установка IP-адреса и порта для сервера
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");int port = 8080;// Создание объекта TcpListenerTcpListener server = new TcpListener(ipAddress, port);// Начало прослушиванияserver.Start();Console.WriteLine("Сервер запущен...");while (true){// Ожидание подключения клиентаTcpClient client = server.AcceptTcpClient();Console.WriteLine("Подключен клиент: {0}", client.Client.RemoteEndPoint);string data = "";string exitCode = "exit";while (data != exitCode){// Получение сообщения от клиентаNetworkStream stream = client.GetStream();int i = stream.Read(bytes, 0, bytes.Length);data = Encoding.UTF8.GetString(bytes, 0, i);Console.WriteLine("Получено сообщение: {0}", data);// Отправка сообщения клиентуbyte[] msg = Encoding.UTF8.GetBytes("Сообщение получено");stream.Write(msg, 0, msg.Length);}// Закрытие соединения с клиентомclient.Close();Console.WriteLine("Соединение закрыто");}}}