Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

public void Resume {

listenerThread.Resume;

}

Методом, который будет открыто доступным, является

RefreshQuotes
. Если содержащий цитаты файл изменяется, то запускается повторное чтение данного файла с помощью этого метода:

public void RefreshQuotes {

ReadQuotes;

}

 }

}

Прежде чем разрабатывать службу для нашего сервера, полезно будет создать тестовую программу, которая имеет экземпляр

QuoteServer
и вызывает
Start
. Таким образом можно протестировать функциональность без необходимости обрабатывать специфические для службы вопросы. Можно сконцентрироваться на создании требуемой функциональности. Этот тестовый сервер должен запускаться вручную и код легко просматривается с помощью отладчика.

Тестовая программа является консольным приложением C#. Мы ссылаемся на сборку класса

QuoteServer
. Содержащий цитаты класс копируется в каталог
с:\wrox
(или нужно изменить аргумент конструктора для определения, куда копируется файл). После вызова конструктора мы обращаемся к методу
Start
экземпляра
QuoteServer.Start
возвращает управление сразу после создания потока выполнения, поэтому консольное приложение продолжает выполняться до тех пор, пока не будет нажата клавиша
Return
:

static void Main(string[] args) {

 QuoteServer qs = new QuoteServer(@"c:\wrox\quotes.txt", 4567);

 qs.Start;

 Console.WriteLine("Hit return to exit");

 Console.ReadLine;

 qs.Stop;

}

Отметим, что

QuoteServer
с помощью этой программы будет выполняться на порте 4567 на
localhost
и необходимо использовать эти настройки позже на клиенте.

Пример TcpClient

Клиент является простым приложением Windows, где можно вводить имя хоста и номер порта сервера. Это приложение использует класс

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

В этом коде используются инструкции

using
:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Net;

using System.Net.Sockets;

using System.Text;

Мы также включаем ссылку на файл

QuoteServer.dll
. Оставшаяся часть кода автоматически создается в IDL, поэтому он здесь не будет рассматриваться подробно. Основная функциональность клиента находится в обработчике нажатия кнопки Get Quote:

protected void buttonQuote_Click(object sender, System.EventArgs e) {

 statusBar.Text = "";

 string server = textBoxHostname.Text;

 try {

int port = Convert.ToInt32(textBoxPortNumber.Text);

 } catch (FormatException ex) {

statusBar.Text = ex.Message; return;

 }

 TcpClient client = new TcpClient;

 try {

client.Connect(

textBoxHostname.Text, Convert.ToInt32(textBoxPortNumber.Text));

NetworkStream stream = client.GetStream;

byte[] buffer = new Byte[1024];

int received = stream.Read(buffer, 0, 1024);

if {received <= 0) {

statusBar.Text = "Read failed"; return;

}

texBoxQuote.Text = Encoding.Unicode.GetString(buffer);

 } catch (SocketException ex) {

statusBar.Text = ex.Message;

 } finally {

client.close;

 }

}

Запустив тестовый сервер и клиент этого оконного приложения, можно протестировать функциональность. Успешное выполнение может дать следующий результат при использовании указанных на экране настроек:

Добавим серверу функциональность службы. Программа уже выполняется, что же нужно еще сделать? Необходимо, чтобы серверная программа автоматически запускалась во время начальной загрузки системы без какого-либо пользователя, зарегистрировавшегося в системе, и мы хотим управлять ею с помощью служебных управляющих программ.

  • Читать дальше
  • 1
  • ...
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: