Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 11
Модератор форума: Bizunow, Romixal 
Форум » Проекты » Примеры и статьи » 39dll Получение текста из интернета (Задержки и как их избежать)
39dll Получение текста из интернета
NoNsYsДата: Четверг, 01.09.2011, 14:54 | Сообщение # 1
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
Добрый день пользователи сайта)))
Т.к. здесь подобного я невидел решил написать статейку, может комунить пригодится).

Ссылка на исходник здесь
Ссылка на экзешник здесь

Несколько дней назад я начал работать с 39dll.
Но у меня в первую очередь возникла проблема в том что при получении данных от сервера идёт задержка пока не получит ответ от сервера.
Я нашёл решение этой проблемки)
в tcpconnect() есть 2 режима: 0.Замораживать игру; 1.Не замораживать игру.
Если ставить 0 то будет тот же эффект что написан выше, но если ставить 1 то скрипт возвращает несколько непонятных символов.
Чтобы tcpconnect() в режиме 1 работала нужно сделать так:
Создать в комнате объект o_control

В событии create создать скрипт

Code
dllinit("39dll.dll",true,true); // Библиотека "39dll.dll" должна быть в папке с исходником
num=0;
str="";
host="rutube.ru"; // Хост откуда брать данные


В событии draw создать скрипт

Code
num+=1;
if(num==1) // Тут мы отправляем запрос
{
tcp = tcpconnect(host, 80, 1);
if(!tcp){exit;}
p = setformat(1, chr(10) + chr(13) + chr(10));
writestring("GET / HTTP/1.0" + chr(10));
writestring("Host: "+ host + chr(10));
sendmessage(tcp);
}
if(num==15) // тут нужно ставить интервал через какое время принять данные, тут стоит 0.5 сек при FPS 30
{
receivemessage(tcp);
receivemessage(tcp, peekmessage(tcp));
setformat(p);
closesocket(tcp);
str=readstring(bytesleft());
clearbuffer();
num=0;
}

draw_text(10,10,str);


В событии game end создать скрипт

Code
dllfree();


В результате я получаю каждые 0.5 сек данные с рутуба.ру, но и тут бывают ошибки.
Ошибки-часть данных или несколько непонятных символов.
Если они встречаются, то тогда надо увеличить интервал.

Скрин:


У меня есть сервер на zymic.com там у меня идёт минимум интервал 12 (из 1000 попыток ~20+-3 ошибок, размер данных 2093 байта) если ставить ниже то получается больше ошибок, а когда я пробивал гугл, то там интервал был 7.
Если есть ошибки в коде пишите буду исправлять.
Буду рад если сможете улучшить мой код))


Сообщение отредактировал NoNsYs - Суббота, 03.09.2011, 19:49
 
agentx001Дата: Четверг, 01.09.2011, 17:23 | Сообщение # 2
Генерал-майор
Группа: Пользователи
Сообщений: 309
Статус: Offline
NoNsYs, ну вообщето тема не нова) Собственно мы всем форумом долго парились и в итоге Слава собрал скрипт на основе http_dll. Всё работает ок, не глючит.
http:9dll.ru/forum/20-270-1
 
NordokДата: Четверг, 01.09.2011, 17:30 | Сообщение # 3
Въехавший
Группа: Пользователи
Сообщений: 79
Статус: Offline
Какой то странный скрипт вместо текста возвращает символы вроде ")!" или "@" или "Bn" при этом абсолютно не видит разицы, есть ли интернет (т.е. возвращает символы и без интернета вообще)

кхм...
 
NoNsYsДата: Четверг, 01.09.2011, 19:26 | Сообщение # 4
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
agentx001, сяб) незнал звеняй. Не люблю брать чужое.
Кстати поидеи это именно для 39dll примерчик, хотя с get_text лишь принцип схожий, но мой примерчик кое где немного лучше, но и немного хуже get_text.


Сообщение отредактировал NoNsYs - Четверг, 01.09.2011, 23:36
 
NordokДата: Четверг, 01.09.2011, 22:34 | Сообщение # 5
Въехавший
Группа: Пользователи
Сообщений: 79
Статус: Offline
Quote (NoNsYs)
но мой примерчик немного лучше get_text.

К сожалению не смог поюзать ваш примерчик... причины выложил выше . Вы бы выложили готовый gmk файл, рабочий, мы бы заценили.


кхм...
 
NoNsYsДата: Четверг, 01.09.2011, 23:35 | Сообщение # 6
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
Залил на народ примерчик, только он немного получше описанного примера.

Сообщение отредактировал NoNsYs - Четверг, 01.09.2011, 23:47
 
NordokДата: Пятница, 02.09.2011, 00:24 | Сообщение # 7
Въехавший
Группа: Пользователи
Сообщений: 79
Статус: Offline
За примерчик спасибо, сейчас поюзаем

Добавлено (02.09.2011, 00:24)
---------------------------------------------
Поюзал, на двух разных компах. Количество попыток = количеству ошибок. Возвращает совершенно непонятные символы вроде нот, знаков подчеркивания, параграфа и так далее... Это я один такой везучий ?


кхм...

Сообщение отредактировал Nordok - Пятница, 02.09.2011, 00:14
 
NoNsYsДата: Пятница, 02.09.2011, 02:11 | Сообщение # 8
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
Nordok, мда, странновато это, у меня всё хорошо работает. Можешь сказать какая OC стоит, и какой провайдер?
Вот так должно быть:


Сообщение отредактировал NoNsYs - Пятница, 02.09.2011, 02:23
 
NordokДата: Пятница, 02.09.2011, 02:41 | Сообщение # 9
Въехавший
Группа: Пользователи
Сообщений: 79
Статус: Offline
Тестил на ХР и на Vista - результат одинаковый. Скринить даже не буду, в общем понятно, как именно это у меня выглядит. Провайдер Интертелеком, скорости интернета достаточно для подобной функции.

кхм...
 
NoNsYsДата: Пятница, 02.09.2011, 10:25 | Сообщение # 10
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
я то один такой у кого робит???((((
Попробуй ещё вот это может так получится.


Сообщение отредактировал NoNsYs - Пятница, 02.09.2011, 10:27
 
ФилДата: Пятница, 02.09.2011, 14:02 | Сообщение # 11
Томатный Революционер
Группа: Администраторы
Сообщений: 784
Статус: Offline
NoNsYs, не работает.

Похвалы делают людей ленивыми, ругайте друг друга. Оценку любого проекта надо начинать со слов «Так, что это за г…но?». (с)Veil
 
NordokДата: Пятница, 02.09.2011, 14:26 | Сообщение # 12
Въехавший
Группа: Пользователи
Сообщений: 79
Статус: Offline
Не прокатил фокус:


кхм...
 
NoNsYsДата: Суббота, 03.09.2011, 12:09 | Сообщение # 13
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
мдяяяя, ну чтож будем разбираться если у большинства неробит...
Знаю точно что дело в софте...
Незнаю точно ли это но возможно это из за DirectX и/или NET Framework.
Кстати в DirectX 9 есть либа 39.dll может она нужна...


Сообщение отредактировал NoNsYs - Суббота, 03.09.2011, 23:41
 
zxc76Дата: Вторник, 06.09.2011, 21:06 | Сообщение # 14
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
Quote (agentx001)
NoNsYs, ну вообщето тема не нова) Собственно мы всем форумом долго парились и в итоге Слава собрал скрипт на основе http_dll. Всё работает ок, не глючит. http:9dll.ru/forum/20-270-1

Ну задержка есть там, иногда)

Quote (Nordok)
Тут все просто, предохраняться нужно

ахахаххахаахахах

Quote (NoNsYs)
agentx001, сяб) незнал звеняй. Не люблю брать чужое.

Я тоже))) Но если бы кто-то написал гет-текст ещё лучше, я бы взял новую версию))) Гет_текст для меня особе исключение)))

NoNsYs, пробуй что-нибудь делать... Будет очень хорошо если у тебя получиться новый гет_текст)))


 
NoNsYsДата: Среда, 07.09.2011, 18:06 | Сообщение # 15
Пишет что-то
Группа: Пользователи
Сообщений: 8
Статус: Offline
Лады посмотрю сёня ещё разок, может лучше пойму почему не работает ведь у многих так вначале не понимают, а потом всё само собой образуется

Добавлено (07.09.2011, 18:06)
---------------------------------------------
Сегодня ещё разок посмотрел, так вот я систематизоровал скрипт он в порядке я даже делал так же на gex, но там хуже чем длл работает.
Всё таки дело в софте... я проверил DirectX тут ни при чём(((
Обновил исходники


Сообщение отредактировал NoNsYs - Среда, 07.09.2011, 18:58
 
Форум » Проекты » Примеры и статьи » 39dll Получение текста из интернета (Задержки и как их избежать)
Страница 1 из 11
Поиск:
Хостинг от uCoz