Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Форматирование времени и даты ⇐ ПредыдущаяСтр 4 из 4
Задача сервера — сообщить информацию о текущем времени и дате клиенту. Метод 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; Просмотров: 221; Нарушение авторского права страницы