У вас вопросы?
У нас ответы:) SamZan.net

Тема Створення клієнт-серверних програм за допомогою бібліотек C Виконав студент

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.4.2025

Міністерство освіти і науки молоді та спорту України

Національний університет "Львівська політехніка"

Інститут післядипломної освіти

Кафедра програмного забезпечення

Звіт для
Лабораторної роботи

З ПРЕДМЕТУ «Програмне забезпечення мережевих технологій»
           Тема «Створення клієнт/серверних програм за допомогою  бібліотек C#»

Виконав студент
групи ПІ-31з

Михалечко Назарій

 

 



Львів – 2013

Лабораторна робота

Тема: створення клієнт/серверних програм за допомогою  бібліотек C#.

Мета: навчитись  концепціям програмування мовою C#, а також засвоїти основні стандартні класи і методи  бібліотеки  net.

1. Програмування клієнтів та серверів  за протоколом TCP/IP

Розглянемо класи простору назв System.Net, на базі яких розробляються  програми сервера та клієнта  для спілкування  між собою на основі  TCP та  UDP протоколів.  В протоколі  TCP/IP кожний комп’ютер ідентифікується цілим числом довжиною в чотири байти – IP-адресою (наприклад, форматованим як 192.168.0.101). Для кращого запам’ятовування ця IP-адреса прив’язується до назви вузлового комп’ютера  -хоста.

Створення сервера  чи клієнта пов’язане з  формуванням об’єкту сокету для  прийняття запитів та надсилання відповідей. Для формування сокета необхідно знати   IP-адресу  комп’ютера, на якому виконується сервер, та номер  TCP – порту. Для визначенння IP-адреси за назвою хоста  використовується клас DNS для сполучення з DNS-сервером. Відповідні команди записуються наступним чином:

 // DNS: за назвою хосту визначення   IP-адреси

 IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());

IPAddress ipAddress = ipHostInfo.AddressList[0];

 // створення обєкту порт+ IP-адреса

IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

В цьому фрагменті присутні класи IPHostEntry, IPAddress – певні структури даних, методи яких дозволяють отимати їх властивості, а саме:

- Dns.GetHostName()- повертає назву компютера,

- Dns.Resolve() - повертає обєкт IPHostEntry інформації щодо компютера з заданою назвою, в тому числі AddressList  властивість, для повернення IP-адреси компютера (типу IPAdress). Метод Resolve() генерує виняткову ситуацію, якщо хост не знайдено.

Завдання до лабораторної роботи

  1.  Створити клас клієнта.
  2.  Створити клас сервера.
  3.  Забезпечити клієнт-серверне з’єднання.
  4.  Сформулювати ТЗ і специфікації на проектування локальної мережі кафедри, лабораторії тощо. Навести структуру локальної мережі з комп’ютером – сервером. Навести мінімальний та максимальний набори класів, необхідних для виконання мережею своїх функцій


Реалізація завдання

Клієнт

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

using System.Net.Sockets;

using System.IO;

namespace Client

{

   class Program

   {

       private static System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();

       static void Main(string[] args)

       {

           Console.WriteLine ("Client Started");

// Створюєм сокет і конектимсь до серевера в порт 1234

           clientSocket.Connect("127.0.0.1", 1234);

           //получаєм потік

NetworkStream serverStream = clientSocket.GetStream();

           BinaryWriter Write = new BinaryWriter(serverStream);

          string g="";

 // до поки не ведено stop зчитуєм інформацію і відправляєм серверу

          while (g!="stop")     

          {

 

              g=Console.ReadLine();

              Write.Write(g);

 

           }

          

           serverStream.Close();

           Console.Read();

       }

   }

}

Сервер

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

using System.Net.Sockets;

using System.IO;

namespace three

{

   class Program

   {

       

      private static TcpListener server = new TcpListener(1234);

       private static TcpClient client = new TcpClient();

       /// <summary>

       /// клас підключення

       /// </summary>

       public class Connection

       {

           

           public TcpClient cl;

           /// <summary>

           /// функція роботи клієнта з сервером

           /// </summary>

           public void Work()

           {

               try

               {

                   NetworkStream networkStream = cl.GetStream();

                   BinaryReader Reader = new BinaryReader(networkStream); //зчитування

                   while (networkStream.CanRead)

                   {

                       string g = Reader.ReadString();

                       Console.WriteLine("{0}>> {1}", cl.Client.RemoteEndPoint, g);

                       //якщо клієнт вів stop відключаєм його

                       if (g == "stop")

                       {

                           Console.WriteLine("client {0} out ", cl.Client.LocalEndPoint);

                           cl.Client.Close();

                           networkStream.Close();

                           Reader.Close();

                           break;

                       }

                       Reader.BaseStream.Flush();

                   }

               }

               catch (Exception ex)

               {

                   Console.WriteLine(ex.ToString());

               }

           }

           static void Main(string[] args)

           {

               server.Start();

               Console.WriteLine("server start...");

               while (true)

               {

                   Console.WriteLine("wait to client..");

                   client = server.AcceptTcpClient();

                   if (client.Client.Connected)

                   {

                       NetworkStream networkStream = client.GetStream();

                       Console.WriteLine("начата работа с кліентом {0}",     client.Client.RemoteEndPoint);

                      Connection c = new Connection();

                      c.cl = client;

// створюєм окремий поті для клієнта

                       Thread t = new Thread(new ThreadStart(c.Work));

                       t.IsBackground = false;

                      t.Start();                 

                   }                 

               }

               server.Stop();

               Console.WriteLine(" >> exit");

               Console.Read();

           }  }  }}

Робота сервера

 

Робота клієнтів




1.  КЛАСТЕРНЫЙ АНАЛИЗ В ЗАДАЧАХ СОЦИАЛЬНОЭКОНОМИЧЕСКОГО ПРОГНОЗИРОВАНИЯ Введение в кластерный анал
2. ТЕМА СТАНДАРТОВ БЕЗОПАСНОСТИ ТРУДА Электростатические поля
3. белый июльский зной небывалый за последние два столетия затопил город
4. .14 1.Алимов Рафаил Наильевич муж
5. Информатика Информатика Курс лекций Часть1 Для студентов направления 080200 Мене
6. Аудит, его возникновение и развитие
7. Мясной цех столовой воинской части на 500 человек
8. РЕФЕРАТ дисертації на здобуття наукового ступеня доктора юридичних наук Харків2005
9. Программа сложной структуры с использованием меню
10. Подпрограмма англ