Сервер: создание консольного приложения



 

Снова запускаем Visual Studio 2010, откроется Начальная страница:

 

Для начала, надо создать проект, для этого выполним последовательно: Файл -> Создать -> Проект… (также можно просто нажать сочетание клавиш Ctrl + Shift + N или пункт «Создать проект…» на Начальной странице).

 

Выберем слева в пункте Установленные шаблоны язык Visual C #, далее найдём в списке Консольное приложение. Также здесь можно выбрать какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем . NET Framework 4.

 

В поле Имя вводим LWP 11- Server — это название программы (выбрано по названию лабораторного практикума, номеру и названию работы, через тире в названии обозначаем принадлежность будущего приложения). В поле Расположение указана конечная директория, где будет находиться весь проект. Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).

 

Рис. 4. 1. Вводим данные нового проекта консольного приложения

 

После нажатия клавиши ОК мы увидим сформированный проект и исходный код консольного приложения (не пустого изначально).

 

Рис. 4. 2. Обозреватель решений: состав проекта приложения Windows Forms сформированного средой разработки

 

Теперь, можно откомпилировать созданную программу, нажав клавишу F 5 (Отладка -> Начать отладку или нажав на иконку . Тем самым мы запускаем приложение в режиме отладки (и производим компиляцию debug-версии программы) (Debug выбрано изначально). При первом запуске пустого консольного приложения, окно появится и сразу же исчезнет.

 

Теперь необходимо добавить удалённый объект в качестве Ссылки. Выполним: Проект -> Добавить ссылку, либо ПКМ на Ссылки в обозревателе решений, далее Добавить ссылку....

В открывшемся окне перейдём на вкладку Обзор, укажем путь к библиотеке классов, которую мы уже скомпилировали:

 

Рис. 4. 3. Добавить ссылку: выбор нужного объекта, а именно ранее скомпилированной библиотеки классов:LWP 11- RemoteObject . dll

 

Жмём ОК. Удалённый объект добавлен в наше приложение и теперь можно работать с классами, предоставленными этим объектом:

 

Также, необходимо добавить в качестве ссылки ещё один объект (вкладка . NET): System . Runtime . Remoting:

 

Рис. 4. 4. Добавить ссылку: добавление ссылки System . Runtime . Remoting

 

Модифицируем код консольного приложения. В самом начале добавим следующие строчки:

 

using LWP11_RemoteObject;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Ipc;

 

Непосредственно главную функцию, метод Main () изменим следующим образом:

 

   static void Main(string[] args)

   {

       Console.Title = "Динамическая связь приложений (C#) :: Сервер";

       Console.WriteLine("Динамическая связь приложений (C#) :: Сервер");

       // Регистрируем канал № 4567

       var ipcChannel = new IpcChannel("4567");

       ChannelServices.RegisterChannel(ipcChannel, false);

       // Получаем данные по каналам

       RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteSend1), "RemoteSend1.rem", WellKnownObjectMode.Singleton);

          RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteSend2), "RemoteSend2.rem", WellKnownObjectMode.Singleton);

 

       Console.WriteLine("\nНажмите Enter для выхода из приложения...\n\nДанные полученные по каналам:\n\t");

       Console.ReadLine();

   }

 

Осталось только добавить два новых класса, реализующих функции получения данных от клиента. Реализуем их в одном файле. Для этого добавим новый файл в наш проект (Проект -> Добавить новый элемент..., либо нажать сочетание клавиш Ctrl+Shift+A). В открывшемся окне выберем Класс, в качестве имени укажем RemoteSend . cs:

 

Рис. 4. 5. Добавление нового элемента: Класс с именем RemoteSend . cs

 

Изменим весь код нового файла класса следующим образом:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using LWP11_RemoteObject;

 

namespace LWP11_Server

{

class RemoteSend1 : MarshalByRefObject, IRemoteSend1

{

   public void Send(int x, int y)

   {

       Console.ForegroundColor = ConsoleColor.DarkGreen;

       Console.WriteLine("\tX = {0}, Y = {1}", x, y);

   }

}

 

class RemoteSend2 : MarshalByRefObject, IRemoteSend2

{

   public void Send(int x, string y)

   {

       Console.ForegroundColor = ConsoleColor.DarkRed;

       Console.WriteLine("\tTB_1.Text = {0}, TB_2.Text = {1}", x, y);

   }

}

}

 

Компилируем приложение (Release) и запускаем.

 

Рис. 4. 7. Окончательная работа приложения-сервера (LWP 11- Server . exe)

 

Завершающая часть

 

Теперь запускаем только приложение-клиент и приложение-сервер. Щёлкаем на любом место формы клиента, а также вводим числом и букву в текстовые поля. Сервер будет «ловить» все щелчки по форме клиента (левой кнопкой мыши), а также изменения текста в «буквенном» текстовом поле (после изменения, значения двух текстовых полей будут переданы серверу). Результат действий видим в окне консоли сервера. Результат работы показан ниже (Рис. 5. 1):

Рис. 5. 1. Динамическая связь приложений:результат работы приложения-клиента (сверху) и приложения-сервера (снизу)

 


Дата добавления: 2019-09-13; просмотров: 158; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!