Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Форматирование времени и даты



Задача сервера — сообщить информацию о текущем времени и дате клиенту.

Метод EndReceiveFrom позволяет зафиксировать IP-адрес и порт клиента в объекте epSender. Текущее время и дата DTNow преобразуются в строковую переменную DTString. Могут использоваться стандартные и пользовательские варианты форматирования с помощью метода ToString. Первый аргумент называется строкой стандартного строкой стандартного или пользовательского формата даты и времени. Она может принимать стандартные значения: "d", "D", "f", "F", "g", "G", "m", "o", "r", "s", "t", "T", "u", "U", "y".

Кроме того, в этой строке может быть указан пользовательский формат времени и даты, например, строка "d MMMM" соответствует числу и названию месяца, "hh mm ss" – формат «часы, минуты, секунды», "dd MM yy"  - формат «день, месяц, год». Второй аргумент является методом CreateSpecificCulture, который принимает строку, определяющую культуру, например, "ru-RU" соответствует русскому названию месяцев и дней недели. Выберите один из вариантов форматирования даты и используемую культуру измените код соответствующим образом (Приложение A).

Метод SendCallback()

Каждая отправленная дейтаграмма приведет к вызову метода SendCallback():

private void SendCallback(IAsyncResult ar)

{

try

{

serverSocket.EndSend(ar);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Сервер времени и даты", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Данный метод работает в отдельном потоке и позволяет обеспечить асинхронность отправки и приема дейтаграмм сервером.

Метод ServerStop()

Для остановки сервера используется метод ServerStop():

private void ServerStop()

{

try

{

if (!isServerSocketClosed)

{

serverSocket.Close();

textBox3.Text = "Работа сервера прекращена";

button1.Text = "Старт";

isServerSocketClosed = true;

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Сервер времени и даты", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Процедура закрытия сокета на сервере и клиенте ничем не отличается.

Проверка работы серверного приложения

Самостоятельно привяжите методы ServerStart()и ServerStop() к нажатию кнопки button1.

Верните в рабочую область VS окно «Конструктор» и задайте исходные значения поля Text для всех элементов формы. Пропишите вызов метода закрытия сокета при закрытии окна приложения.

Запустите приложение, сделайте скриншот окна приложения для отчета и опишите в отчете принцип работы с клиентским приложением и его интерфейс. Подключитесь к серверу с помощью ранее созданного клиентского приложения (exe-файл можно найти в client/bin/debug/), сделайте скриншот окна клиента после получения времени и даты.

Взаимодействие клиента и сервера

Использование кодового слова

Пусть сервер отправляет время и дату только в том случае, если он получит сообщение определенного вида. Выберите кодовое слово (Приложение 1) и допишите оператор ветвления if в метод ReceiveCallback(IAsyncResult ar) так, чтобы сервер отправлял время и дату только при правильном кодовом слове, а в противоположном случае уведомлял клиент об ошибке (например, с помощью сообщения "Неправильное кодовое слово"):

if (stringRead != "кодовое слово")

{

//неправильное кодовое слово

}

Запустите сервер, подключитесь клиентом и сделайте скриншот окна клиента после получения отказа предоставить время и дату при неправильном кодовом слове. Опишите поведение сервера при приеме неправильного кодового слова. Приведите в отчете код ветвления.


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 204; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.011 с.)
Главная | Случайная страница | Обратная связь