Стек протоколов TCP/IP. Передача данных по сети средствами стека протоколов TCP/IP. Стек протоколов TCP/IP, разработка приложения для передачи данных по сети

Страницы работы

Содержание работы

 МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования

«Гомельский государственный технический университет имени П. О. Сухого»

Факультет автоматизированных и информационных систем

Кафедра «Информационные технологии»

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №7

по дисциплине «Компьютерные сети»

на тему: «Стек протоколов TCP/IP. Передача данных по сети средствами стека протоколов TCP/IP»

Выполнил: студент группы ИТ-32

Проверил ассистент:

Дата сдачи отчета __________________

Дата допуска к защите ______________

Дата защиты ______________________

Гомель 2013


Цель: Изучить стек протоколов TCP/IP, разработать приложение для передачи данных по сети.

Задание:

1. Разработать программное обеспечение, реализующее передачу данных между компьютерами на уровне стека протоколов TCP/IP средствами .Net.

2. Используя возможности стека протоколов TCP/IP организовать обработку информации для нахождения алгебраических дополнений к элементам матрицы размерности N.

Блок схемы алгоритмов представлены на рисунках 1 – 2.

Рисунок 1 – Блок-схема алгоритма Сервера

Рисунок 2 – Блок-схема алгоритма Клиента

Листинг серверного приложения:

class Server

{

static void Main(string[] args)

{

Console.Title = "Лабораторная работа №7 - Серверное приложение";

Server server = new Server();

TcpClient localClient = default(TcpClient);

TcpListener localListener = null;

server.Start(ref localListener);

while (true)

{

localClient = localListener.AcceptTcpClient();

string clientName = server.RecieveData(localClient);

Console.WriteLine("Клиент подключен: " + clientName);

string data = server.RecieveData(localClient);

Console.WriteLine("Матрица полученная от клиента: ");

Matrix bufMatrix = new Matrix(data);

bufMatrix.Print();

string _s_additions = bufMatrix.FindAllAlgAdditions();

server.SendData(_s_additions, localClient);

}

}

private void Start(ref TcpListener localListener)

{

Console.Write("Введите порт: ");

int port = Convert.ToInt32(Console.ReadLine());

localListener = new TcpListener(port);

localListener.Start();

Console.WriteLine("Ожидание клиента...");

}

private void SendData(string data, TcpClient localClient)

{

try

{

NetworkStream nStream = localClient.GetStream();

BinaryWriter bWriter = new BinaryWriter(nStream);

bWriter.Write(data);

}

catch

{

Console.WriteLine("Соединение разорвано!");

}

}

private string RecieveData(TcpClient localClient)

{

try

{

NetworkStream nStream = localClient.GetStream();

BinaryReader bReader = new BinaryReader(nStream);

string data = bReader.ReadString();

nStream.Flush();

return data;

}

catch

{

Console.WriteLine("Соединение разорвано!");

return "";

}

}

}

Листинг клиентского приложения:

class Client

{

static void Main()

{

Console.Title = "Лабораторная работа №7 - Клиентское приложение";

Client client = new Client();

TcpClient localClient = new TcpClient();

client.ConnectToServer(localClient);

Console.Clear();

Matrix myMatrix = new Matrix("А");

myMatrix.Print();

client.SendData(myMatrix.ToString(), localClient);

string _s_algAdditions = client.RecieveData(localClient);

Console.WriteLine("\n\nАлгербаические дополнения элементов матрицы А: ");

Console.WriteLine(_s_algAdditions);

Console.ReadKey(true);

}

private void ConnectToServer(TcpClient localClient)

{

bool connected = false;

while (!connected)

{

Console.Write("Введите адрес сервера: ");

string server = Console.ReadLine();

Console.Write("Введите порт: ");

int port = Convert.ToInt32(Console.ReadLine());

try

{

localClient.Connect(server, port);

SendData(Environment.MachineName, localClient);

connected = true;

}

catch

{

Console.WriteLine("Нет соединения с сервером!\n\n");

connected = false;

}

}

}

private void SendData(string data, TcpClient localClient)

{

try

{

NetworkStream nStream = localClient.GetStream();

BinaryWriter bWriter = new BinaryWriter(nStream);

bWriter.Write(data);

}

catch

{

Console.WriteLine("Соединение с сервером разорвано!");

}

}

private string RecieveData(TcpClient localClient)

{

try

{

NetworkStream nStream = localClient.GetStream();

BinaryReader bReader = new BinaryReader(nStream);

string data = bReader.ReadString();

return data;

}

catch

{

Console.WriteLine("Соединение с сервером разорвано!");

return "";

}

}

}

Тесты:

Тесты серверного приложения представлены на рисунках 3 – 4.

Рисунок 3 – Запуск сервера (ожидание клиента)

Рисунок 4 – Подключение клиента и передача данных

Тесты клиентского приложения представлены на рисунках 5 – 7.

Рисунок 5 – Подключение к серверу

Рисунок 6 – Получение данных от сервера

Рисунок 7 – Данные переданные на сервер

Проверка приложения на корректность вычислений.

Данные для расчета представлены на рисунке 8, а формулы для расчета представлены на рисунке 9.

Рисунок 8 – Данные для проверки

Рисунок 9 – Формулы для расчета

Выводы: В ходе лабораторной работы были получены сведения по использованию стека протоколов TCP/IP, а также разработано приложение для передачи данных по сети на языке C#.

Похожие материалы

Информация о работе