Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > PureBasic

PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач.

Ответ
 
Опции темы
Старый 28.11.2012, 20:30   #1
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Вопрос Данные из интернет странички

Доброго времени суток. Столкнулся с такой задачей:
-Имеем страничку некого игрового сервера на котором отображается цифра текущего онлайна. Как вывести эту цифру программно? То есть как можно расшифровать страничку? Что для этого обязательно знать?
-PureBasic имеет в наличии готовый браузер, может ли это облегчить задачу?
(Offline)
 
Ответить с цитированием
Старый 28.11.2012, 22:00   #2
Paranoia
AnyKey`щик
 
Регистрация: 27.07.2012
Сообщений: 5
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Данные из интернет странички

Вот процедура с примером:
EnableExplicit

#server_ip = "ya.ru"
#server_host = "www.ya.ru"
#server_port = 80
#server_protocol = "HTTP/1.0"
#delay_part = 25

InitNetwork()

Procedure get_server_data(time_for_update.i, buffer_size.i)
  Protected connection_id.i = OpenNetworkConnection(#server_ip, #server_port, #PB_Network_TCP)
  If connection_id <> 0
    Protected string_to_send.s = "GET / " + #server_protocol + #CRLF$
    string_to_send + "Host: " + #server_host + #CRLF$
    string_to_send + "Connection: Close" + #CRLF$ + #CRLF$
    
    SendNetworkString(connection_id , string_to_send)
    
    Protected time_current.i = ElapsedMilliseconds()
    Protected time_limit.i = time_current + time_for_update
    
    Protected final_of_transmission.i = 0
    
    Define content.s
    
    Repeat     
      Select NetworkClientEvent(connection_id)
        Case #PB_NetworkEvent_Data
          Repeat
            Protected *memory_buffer = AllocateMemory(buffer_size)
            Protected received_size.i = ReceiveNetworkData(connection_id, *memory_buffer, buffer_size)
            Debug received_size
            If received_size = -1 Or received_size = 0
              FreeMemory(*memory_buffer)
              final_of_transmission.i = 1
              Break
            Else
              Protected received_size_global.i
              received_size_global + received_size
              Protected *memory_global = ReAllocateMemory(*memory_global, received_size_global)
              CopyMemory(*memory_buffer, *memory_global + (received_size_global - received_size), received_size)
              FreeMemory(*memory_buffer)
            EndIf
          ForEver
      EndSelect
      
      If final_of_transmission > 0
        CloseNetworkConnection(connection_id)
        content = PeekS(*memory_global, received_size_global)
        FreeMemory(*memory_global)
        Debug "Done!"
        Debug content
        Break
      Else
        ;timeout check call
        time_current = ElapsedMilliseconds()
        If time_current > time_limit
          ;status is timeout (server not responge)
          CloseNetworkConnection(connection_id)
          Debug "TimeOut!"
          Break
        Else
          Delay(#delay_part)
        EndIf
      EndIf
    ForEver
  Else
    Debug "Can not connect!"
  EndIf 
EndProcedure

get_server_data(10000, 4096)
Будет принята страница с сайта ya.ru, тайм-аут приема данных — 10 сек., размер TCP-буффера — 4096 байт (вообще, это параметры).
В строке content на 53 строке будет содержимое страницы.

Меняете адреса, добавляете обработку ошибок (как минимум 69 и 61 строки) и готово.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (28.11.2012)
Старый 29.11.2012, 19:33   #3
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Данные из интернет странички

Работает, круто. Только вот беда в том что нужная инфа скрыватся под ява скриптом, как быть?
(Offline)
 
Ответить с цитированием
Старый 29.11.2012, 19:42   #4
Paranoia
AnyKey`щик
 
Регистрация: 27.07.2012
Сообщений: 5
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Данные из интернет странички

Можно пример страницы? Или лучше сразу её адрес в сети.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (03.01.2015)
Старый 30.11.2012, 02:01   #5
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Данные из интернет странички

Ну вот, пришла пора изучат JavaScripts =)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:13.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com