Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2013, 13:09   #1
worldbest
 
Регистрация: 13.08.2013
Сообщений: 6
По умолчанию Поясните код

Наткнулся на http://brain-sharper.blogspot.ru/201...plistener.html

Ответьте пожалуйста на вопросы в коде.

Код:
string url = "http://127.0.0.1";
string port = "9999";
string prefix = String.Format("{0}:{1}/", url, port); // Что означает эта запись : String.Format("{0}:{1}/", url, port) ???

HttpListener listener = new HttpListener(); // Зачем сначала указывать HttpListener и потом new HttpListener() ???
listener.Prefixes.Add(prefix); // Что делает эта строчка???

listener.Start();

Console.WriteLine("Welcome to simple HttpListener.\n", port);
Console.WriteLine("Listening on {0}...", prefix);

while (true)
{
//Ожидание входящего запроса
HttpListenerContext context = listener.GetContext(); // Что делает эта строчка???

//Объект запроса
HttpListenerRequest request = context.Request; // Что такое объект запроса???

//Объект ответа
HttpListenerResponse response = context.Response; // Что такое объект ответа???

//Создаем ответ
string requestBody;
Stream inputStream = request.InputStream; // Что делает эта строчка???
Encoding encoding = request.ContentEncoding; // Что делает эта строчка???
StreamReader reader = new StreamReader(inputStream, encoding); // Что делает эта строчка???
requestBody = reader.ReadToEnd(); // Что делает эта строчка???

Console.WriteLine("{0} request was caught: {1}", 
request.HttpMethod, request.Url); // Что делает эта строчка???

response.StatusCode = (int)HttpStatusCode.OK; // Что делает эта строчка??? 

//Возвращаем ответ
using (Stream stream = response.OutputStream){ } // Что делает эта строчка???
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.08.2013 в 13:14.
worldbest вне форума Ответить с цитированием
Старый 15.08.2013, 17:07   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
string url = "http://127.0.0.1";
string port = "9999";
string prefix = String.Format("{0}:{1}/", url, port); //Format - функция типа String. Если url = ссылка, а port = порт, т.е. это строки. то Format скомбинирует их в одну строку: "ссылка:порт". Т.е. вместо цифр там будут значения, а что не находится в "{}" - не будет преобразовано.

HttpListener listener = new HttpListener(); //Это не указатель, а тип объекта, new - оператор, который выделит память для это объекта, иначе он будет равен null и будет ошибка при выполнении следующего действия.
listener.Prefixes.Add(prefix); //Добавляет префикс к ссылки "URL".

listener.Start();

Console.WriteLine("Welcome to simple HttpListener.\n", port);
Console.WriteLine("Listening on {0}...", prefix);

while (true)
{
//Ожидание входящего запроса
HttpListenerContext context = listener.GetContext(); //Ждет блин запроса, там же выше написано. Будет работать, пока не получит значение в переменную context.

//Объект запроса
HttpListenerRequest request = context.Request; // Объект куда сохранится запрос.

//Объект ответа
HttpListenerResponse response = context.Response; // Как только запрос прошел, его данные пишутся в эту переменную.

//Создаем ответ
string requestBody;
Stream inputStream = request.InputStream; // Получает содержимое входящего объекта HTTP.
Encoding encoding = request.ContentEncoding; // Получает набор знаков, работа с языком.
StreamReader reader = new StreamReader(inputStream, encoding); // создается поток для чтения этого набора знаков.
requestBody = reader.ReadToEnd(); // Читает набор знаков, пока он не будет прочитан до конца.

Console.WriteLine("{0} request was caught: {1}", 
request.HttpMethod, request.Url); //Тоже самое, что и String.Format ("HTTPМетод request was caught URL")

response.StatusCode = (int)HttpStatusCode.OK; // сохраняет состояние HTTP протокола как "Хорошее" - ура все получилось.

//Возвращаем ответ
using (Stream stream = response.OutputStream){ } // using - оператор, включающий в себя метод интерфейса IDisposable - Object.Dispose. Создается исходящий поток, в который пишется ответ клиенту, далее память, выделенная под поток, освобождается. Выше в коде Stream inputStream = request.InputStream; необходимо в конце добавить inputStream.Dispose(), чтобы память не жрал.
}
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 15.08.2013 в 17:10.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 15.08.2013, 17:38   #3
worldbest
 
Регистрация: 13.08.2013
Сообщений: 6
По умолчанию

Спасибо огромное за исчерпывающий ответ!
Код:
listener.Prefixes.Add(prefix); //Добавляет префикс к ссылки "URL".
//Можно конкретнее немножко? Что за "префикс" и для чего он нужен. Как я понял prefix=http://127.0.0.1:9999/ 

HttpListenerResponse response = context.Response; // Как только запрос прошел, его данные пишутся в эту переменную.

//Почему данные пишутся в эту переменную? и для чего?


Stream inputStream = request.InputStream; // Запрос клиента в байтах
Encoding encoding = request.ContentEncoding; //Кодировка запроса клиента
StreamReader reader = new StreamReader(inputStream, encoding); //Перевод из массива байт в запрос с учетом кодировки(encoding)
requestBody = reader.ReadToEnd(); //прочитать все данные и сохранить их в переменную-строку
worldbest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на ассемблере. Поясните код. Valkiriya1509 Помощь студентам 0 12.12.2010 17:16
Поясните по ассемблеру Namolem Помощь студентам 1 10.10.2010 12:11
Поясните мне этот код шаг за шагом kroatoani Общие вопросы Delphi 5 21.09.2010 14:21
Поясните код... Masip Общие вопросы Delphi 1 18.05.2010 07:22