Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> c# определить суммарный размер всех страниц www- 
:(
    Опции темы
katbka25
Дата 30.11.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.9.2008

Репутация: нет
Всего: нет



Для формирования запросов и получения ответов сервера использовать функции для работы с сокетами/
Есть взятый из msdn кусок
Код
public class GetSocket
        {
            private static Socket ConnectSocket(string server, int port)
            {
                Socket s = null;
                IPHostEntry hostEntry = null;

                // Get host related information.
                hostEntry = Dns.GetHostEntry(server);

                // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
                // an exception that occurs when the host IP Address is not compatible with the address family
                // (typical in the IPv6 case).
                foreach (IPAddress address in hostEntry.AddressList)
                {
                    IPEndPoint ipe = new IPEndPoint(address, port);
                    Socket tempSocket =
                        new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

                    tempSocket.Connect(ipe);

                    if (tempSocket.Connected)
                    {
                        s = tempSocket;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                return s;
            }

            // This method requests the home page content for the specified server.
            public static string SocketSendReceive(string server, int port, string pages)
            {
                //string pages = "/info/studcity/";
                string request = "";
                pages = "/" + pages + "/";
                if (pages != "")
                    request = "GET " + pages + " HTTP/1.1\r\nHost: " + server +
                    "\r\nConnection: Close\r\n\r\n";
                else
                    request = "GET  / HTTP/1.1\r\nHost: " + server +
                    "\r\nConnection: Close\r\n\r\n";
                Byte[] bytesSent = Encoding.Default.GetBytes(request);
                Byte[] bytesReceived = new Byte[256];

                // Create a socket connection with the specified server and port.
                Socket s = ConnectSocket(server, port);

                if (s == null)
                    return ("Connection failed");

                // Send request to the server.
                s.Send(bytesSent, bytesSent.Length, 0);

                // Receive the server home page content.
                int bytes = 0;
                string page = "Default HTML page on " + server + ":\r\n";

                // The following will block until te page is transmitted.
                do
                {
                    bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
                    page = page + Encoding.Default.GetString(bytesReceived, 0, bytes);
                }
                while (bytes > 0);

                return page;
            }
        }


и свои попытки поиска ссылок по коду страницы
Код
 string result = "";
            int port = Convert.ToInt32(textBox2.Text);
            string myhost = Convert.ToString(textBox1.Text);
            listHREF = new List<string>();
            listHREF.Add(myhost);
            k++;

            result = GetSocket.SocketSendReceive(myhost, port, "");
//выводится полученный код страницы
            richTextBox1.Text = result;

            //выделяем все ссылки
            int startindex = 0;
            int endindex = 0;
            int value = 0;
            string s;
            long n = result.Length;
            while (value != -1)
            {
                value = result.IndexOf("<a href=");

                if (value != -1)
                {
                    startindex = value + 9;
                    endindex = result.IndexOf("\"", startindex) - 1;
                    s = result.Substring(startindex, endindex - startindex + 1);
                        if (!listHREF.Contains<string>(s))
                        {
                            listHREF.Add(s);
                            k++;
                        }
                    result = result.Substring(endindex + 1);
                }
            }


Про Content-Length в заголовке знаю, но как то не всегда встречается.. как считать размер страницы, если нет Content-Length?
спасибо за помощь...
PM MAIL   Вверх
Fortnox
Дата 30.11.2011, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Цитата(katbka25 @  30.11.2011,  17:42 Найти цитируемый пост)
Для формирования запросов и получения ответов сервера использовать функции для работы с сокетами/

Это обязательное условие?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.