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

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

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

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

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

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

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

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

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

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

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

Принял:       преподаватель                                  

Дата сдачи отчета:         _____________________

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

Дата защиты:                  _____________________

Гомель 2011

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

   Задание:

4.

Листинг программы.

Client.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

namespace client

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

label1.Text = "Результат:";

this.Refresh();

TcpClient SocetForServer;

try

{

SocetForServer = new TcpClient(textBox1.Text, 35);

textBox2.Enabled = false;

this.Text = "Клиент: подключен";

this.BackColor = Color.Green;

this.Refresh();

NetworkStream C1 = SocetForServer.GetStream();

double niz_gr_int = ReadData(C1);

double verx_gr_int = ReadData(C1);

double tochnost = ReadData(C1);

double r = MetodPramoug(niz_gr_int, verx_gr_int, tochnost);

WriteData(C1, r);

label1.Text = "Результат: от " + niz_gr_int + " до " + verx_gr_int;

textBox2.Text = r.ToString();

}

catch

{

MessageBox.Show("Error! Связь с сервером не установлена");

this.Text = "Клиент: отключен";

this.BackColor = Color.Red;

}

}

public static double ReadData(NetworkStream NS)

{

byte[] buf8 = new byte[8];

NS.Read(buf8, 0, 8);

return BitConverter.ToDouble(buf8, 0);

}

public static void WriteData(NetworkStream NS, double number)

{

byte[] buf8 = new byte[8];

buf8 = BitConverter.GetBytes(number);

NS.Write(buf8, 0, 8);

}      

public double MetodPramoug(double niz_gr_int, double verx_gr_int, double tochnost)

{

double s1 = 0, i = niz_gr_int; ;

int n = 2;

double dx = (verx_gr_int - niz_gr_int) / n;            

while (Math.Abs(((function(i) + function(i + dx)) / 2) * dx) >= tochnost)

{

n=n+100;

dx = (verx_gr_int - niz_gr_int) / n;

}

for (i = niz_gr_int; i < verx_gr_int; i += dx)

{

s1 += ((function(i) + function(i + dx)) / 2) * dx;

}   

return s1;

}

public double function(double x)

{

double y;

return y = Math.Sin(x);

}

}

}

Скриншот.

Server

Листинг.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

namespace server

{

public partial class Form1 : Form

{

TcpListener WaiterTCP = new TcpListener(80);

Socket[] Clients;

Data[] dannie;

bool f = true;

public Form1()

{

InitializeComponent();

WaiterTCP.Start();

}

private void button1_Click(object sender, EventArgs e)

{

int kol = Convert.ToInt32(numericUpDown1.Value);

button2.Enabled = true;

label7.Text = kol.ToString(); this.Refresh();

if (f)

{

Clients = new Socket[Convert.ToInt32(numericUpDown1.Value)];

button1.Enabled = false;

}

for (int i = 0; i < Clients.Length; i++)

{

Clients[i] = WaiterTCP.AcceptSocket();

if (Clients[i].Connected)

{ kol--; label7.Text = kol.ToString(); this.Refresh(); }    

}

}

public static void WriteData(NetworkStream NS, double number)

{

byte[] buf8 = new byte[8];

buf8 = BitConverter.GetBytes(number);

NS.Write(buf8, 0, 8);

}

public static double ReadData(NetworkStream NS)

{

byte[] buf8 = new byte[8];

NS.Read(buf8, 0, 8);

return BitConverter.ToDouble(buf8, 0);

}

public void Data(double niz_gr_int, double verx_gr_int, int CountClient)

{

double Shag_inter = (verx_gr_int - niz_gr_int) / CountClient;

double niz_gran = niz_gr_int;

dannie = new Data[CountClient];

for (int i = 0; i < dannie.Length;i++ )

dannie[i] = new Data();

dannie[0].Verx_gr_int = niz_gr_int;

for (int i = 0; i < dannie.Length; i++)

{

dannie[i].Niz_gr_int = niz_gran;

dannie[i].Verx_gr_int = dannie[i].Niz_gr_int + Shag_inter;

niz_gran = dannie[i].Verx_gr_int;

}

}

private void button2_Click(object sender, EventArgs e)

{

double niz_gr_int = Convert.ToDouble(textBox1.Text);

double verx_gr_int = Convert.ToDouble(textBox3.Text);

double tochnost = Convert.ToDouble(textBox6.Text);

double vihod = 0;

NetworkStream[] Potoki = new NetworkStream[Clients.Length];

for (int i = 0; i < Clients.Length; i++)

Potoki[i] = new NetworkStream(Clients[i]);

Data(niz_gr_int, verx_gr_int, Clients.Length);

DateTime T1 = DateTime.Now;

for (int i = 0; i < Potoki.Length; i++)

{

WriteData(Potoki[i], dannie[i].Niz_gr_int);

WriteData(Potoki[i], dannie[i].Verx_gr_int);

WriteData(Potoki[i], tochnost);

}

for (int i = 0; i < Potoki.Length; i++)

vihod += ReadData(Potoki[i]);

DateTime T2 = DateTime.Now;

textBox4.Text = (vihod).ToString();

textBox5.Text = (T2 - T1).Milliseconds.ToString() + " мс.";

for (int i = 0; i < Potoki.Length; i++)

Potoki[i].Close();

}

private void Form1_Load(object sender, EventArgs e)

{

button2.Enabled = false;

}      

}

class Data

{

double niz_gr_int, verx_gr_int;

public double Niz_gr_int

{

get { return niz_gr_int; }

set { niz_gr_int = value; }

}

public double Verx_gr_int

{

get { return verx_gr_int; }

set { verx_gr_int = value; }

}

}

}

Скриншот.

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

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

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