Сетевое программирование в .NET, страница 29

Если в вашей системе установлена служба IIS (Internet Information Services), то файл iisstart.htm должен присутствовать в директории С:\Inetpub\wwwroot, которая считается корневой для вашего Web-сервера. Она имеет псевдоним localhost, который считается стартовым адресом (URL) Web-сервера. Второй HTML-документ с именем intro15 мы сейчас создадим в студии и запишем в ту же директорию.

¨  Добавьте к проекту TrySocket новый компонент типа HTML Page с именем Clock.htm.

¨  Поместите в этот файл следующий HTML-код, который взят из предыдущего курса лекций ASP.NET. Отмечу, что новая версия HTML потребовала внести некоторые коррективы (язык стал более строгим).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Live Clock</title>

<script type="text/jscript">

function SetDate()

{

  now = new Date();

  hours = now.getHours();

  minutes = now.getMinutes();

  seconds = now.getSeconds();

  clock.time.value = hours + (minutes < 10 ? ":0" : ":") + minutes +

    (seconds < 10 ? ":0" : ":") + seconds;

  day = now.getDate();

  month = now.getMonth() + 1;

  year = now.getYear();

  clock.date.value = day +"."+ (month < 10 ? "0" : "") + month +"."+ year;

  setTimeout (SetDate, 1000);

}

function Move()

{

  clock.time.style.pixelLeft -= 7;

  clock.time.style.pixelTop++;

  timerID = setTimeout ("Move()", 10);

  if (clock.time.offsetLeft < clock.date.offsetLeft)

  {

    clock.time.style.posLeft = clock.date.style.posLeft;

    clock.time.style.posTop = 60;

    clearTimeout(timerID);

  }

}

</script></head>

<body onload="SetDate()" onclick="Move()">

<form action="http://localhost/Clock.htm" id="clock">

<input type="text" readonly="readonly" style="BORDER: #00ff00 ridge; FONT-WEIGHT: bold;

  FONT-SIZE: 24px; LEFT: 75%; WIDTH: 150px; COLOR: Lime; POSITION: absolute;

  BACKGROUND-COLOR: black; TEXT-ALIGN: center" id="time"/>

<input type="text" readonly="readonly" style="BORDER: #ffccff ridge; FONT-WEIGHT: bold;

  FONT-SIZE: 24px; LEFT: 5%; WIDTH: 150px; COLOR:#ffccff; POSITION: absolute;

  BACKGROUND-COLOR: black; TEXT-ALIGN: center" id="date"/>

</form></body></html>

¨  Перенесите копию этого файла в корневую папку сервера.

¨  Вновь откройте файл MainForm.cs в режиме редактирования кода и для объекта toolStripCombo создайте обработчик события SelectedIndexChanged.

¨  В тело обработчика вставьте код, который устанавливает документ-источник для нашего браузера.

  browser.Url = new Uri(toolStripCombo.SelectedItem.ToString());

¨  Для того, чтобы форма не бездействовала при загрузке, добавьте реакцию на событие Load и в тело обработчика вставьте код, загружающий в браузер другой HTML-документ

  browser.Url = new Uri("http://localhost/iisstart.htm");

¨  Сделайте новый проект стартовым и запустите на выполнение.

¨  Выберите в списке адрес нашего документа и вы должны увидеть окно примерно такого вида.

¨  Щелкните левой кнопкой в клиентской области окна и наблюдайте работу кода на языке JScript.

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

¨  Освободите место для элемента RichTextBox. Для этого установите режим причаливания браузера к верхней части формы (свойство Dock должно стать равным Top).

¨  Добавьте элемент RichTextBox с именем richText и расположите его под окном браузера. Его свойство Dock тоже установите в значение Top.