Файл: Отчет лабораторной работы Создание клиентсерверного приложения Протокол.docx
Добавлен: 05.12.2023
Просмотров: 20
Скачиваний: 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;
// Создание объекта TcpClient
TcpClient 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;
// Создание объекта TcpListener
TcpListener 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("Соединение закрыто");
}
}
}