МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования
«Гомельский государственный технический университет имени П. О. Сухого»
Факультет автоматизированных и информационных систем
Кафедра «Информационные технологии»
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №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#.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.