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