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

1 ... 139 140 141 [ 142 ] 143 144 145 ... 170


Подключен ли компьютер к Интернету?

Чтобы проверить наличие подключения компьютера к Интернету, можно воспользоваться функцией Windows API internetGetConnectedstate, применение которой проиллюстрировано в листинге 16.8.

Листинг 16.8. Проверка наличия подключения компьютера к Интернету

...............................................>..............MLi..............UL-.i.......i.i.i.sU...................................... ..w;...........................................

I/ Функция windows API [Dlllmport( wininet.dll )]

static extern bool InternetGetConnectedstate(

ref InternetConnectionState IpdwFlags, int dwReserved);

[Flags]

enum InternetConnectionState : int {

INTERNET CONNECTION MODEM = 0x1, INTERNET CONNECTION LAN = 0x2, INTERNET CONNECTION PROXY = 0x4, INTERNET RAS INSTALLED = 0x10, INTERNET CONNECTION OFFLINE = 0x20, INTERNET CONNECTION CONFIGURED = 0x40

private void buttonl Click(object sender, EventArgs e) {

MessageBox.Show(CheckUrl(textBoxl.Text).ToString());

Теперь вам достаточно ввести в текстовое поле какой-нибудь адрес и убедиться, что данный адрес доступен в сети. Можно использовать как название сайта (например, www.stream.ru), так и указывать конкретный файл на сайте (например, www.whatis.ru/index.shtml). В данном примере используется префикс www для проверки, что адрес является веб-сайтом. Можно сделать функцию более универсальной, чтобы она позволяла бы проверять доступность ссылки, не имеющей подобного префикса.

Примечание

Пример, в котором производится проверка адреса, находится в папке CheckUrlDemo на прилагаемом диске.



Пересылка данных по протоколу HTTP

Мы рассмотрим лишь два примера, которые дают общее представление об использовании протокола HTTP в .NET Framework. Для этой цели служит ряд классов.

Как послать запрос GET

и отобразить полученные данные?

в примере, приведенном в листинге 16.6, программа посылала запрос при помощи класса HttpWebRequest И обрабатывала полученный ответ (класс HttpWebResponse). С ПОМОЩЬЮ комбинации запрос-ответ можно не только проверить доступность адреса, но и получить содержимое запрашиваемого адреса. Сделаем это (листинг 16.9) с применением похожих классов WebRequest И WebResponse.

{ Листинг 16.9ь Посыла запроса серверу и обработка ответа

using System.Net; using System.10;

private void buttonl Click(object sender, EventArgs e) {

string sURL;

sURL = http: netsources.narod.ru/ ;

WebRequest wrGETURL;

wrGETURL = WebRequest.Create(sURL);

Stream objStream;

objStream = wrGETURL.GetResponse().GetResponseStream() ; StreamReader objReader = new StreamReader(objStream);

private void buttonl Click(object sender, EventArgs e) {

InternetConnectionState flags = 0;

bool checkStatus = InternetGetConnectedState(ref flags, 0); MessageBox.Show(checkStatus.ToStringO);



Как видите, с помощью .NET Framework очень просто сделать запрос GET для получения веб-страницы из Интернета, используя очень удобное пространство имен System.Net, что избавляет разработчика от необходимости использовать неуправляемые функции Winlnet API. Классы webRequest и webResponse позволяют делать запрос интернет-ресурсов и обработать возвращаемые данные. Используя эти классы, можно обработать поток, получаемый после запроса, так же, как обычно это происходит при чтении текстового файла. Если вы используете прокси-сервер, то вам нужно использовать в приложении дополнительный код. Более подробную информацию на этот счет вы можете получить из статьи Базы Знаний How to make а GET request by using Visual C# no адресу http: support.microsoft.coin/kb/307023/.

Примечание

Пример обработки запроса находится в папке RequestResponse на прилагаемом диске.

Как скачать файл из Интернета?

Скачать файл из Интернета, если вам известен его адрес, не составляет никакого труда. Достаточно воспользоваться классом system.Net .WebClient

(листинг 16.10).

Лйотинг16.1 о, Закач1& айл из и -

using System.Net;

private void button2 Click(object sender, EventArgs e) 15 Зак 262

string sLine = ; int i = 0;

while (sLine != null) {

i++;

sLine = objReader.ReadLine0; if (sLine != null)

textBoxl.Text += string.Format( {0}:{1}i, sLine);



1 ... 139 140 141 [ 142 ] 143 144 145 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика