ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

23.02.2008, 02:43
|
|
Познающий
Регистрация: 25.10.2007
Сообщений: 69
Провел на форуме: 348179
Репутация:
52
|
|
Jes спс тебе с этим я более мение разобрался. А ни у кого нету исходничка на С++ на подбор таблиц, или столбцов?
|
|
|

24.02.2008, 02:05
|
|
Познающий
Регистрация: 29.01.2008
Сообщений: 82
Провел на форуме: 373690
Репутация:
88
|
|
Как в Buildere при работе с idHTTP1 избавится от ошибки EIdsocketerror #10054
А ещё лучше скажите как сделать чтоб при поевлении любой ошибки оно писало что произошла ошибка и продлжоло работу дальше, а не завергало приложение.
Последний раз редактировалось Smapt; 24.02.2008 в 16:28..
|
|
|

24.02.2008, 14:18
|
|
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме: 90595
Репутация:
0
|
|
Подскажите пжалста.
Как получить картинку с сервера?
делаю следующее...
Код:
char url[] = "/i/switch-yaru.png";char host[] = "img.yandex.ru";
sprintf( request, "GET %s HTTP/1.1\r\nAccept: image/png, image/gif\r\nHost: %s\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\nConnection: Close\r\n\r\n", url, host );
send( s, request, strlen( request ), 0 );
recv( s, response, 1024*32, 0);
В результате получаю ответ сервера:
Код:
HTTP/1.1 200 OK
Connection: close
Expires: Tue, 22 Apr 2008 15:56:59 GMT
Cache-Control: max-age=5184000
Content-Type: image/png
Accept-Ranges: bytes
ETag: "490032732"
Last-Modified: Fri, 27 Jul 2007 11:27:33 GMT
Content-Length: 296
Date: Fri, 22 Feb 2008 15:56:59 GMT
Server: lighttpd/1.4.18
???Как получить саму PNG'ку???
|
|
|

24.02.2008, 15:59
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
во-первых ты неправильно используешь функцию recv. Здесь лучше было бы принимать данные в цикле пока сервер не закроет соединение. Картинка будет идти сразу после заголовка http-ответа(конец ответа легко определить по последовательности \x0D\x0A\x0D\x0A)
если же лень писать правильно то после получения заголовка можешь просто вызвать
recv( s, response, 1024*32, 0);
еще раз, на этот раз там будет картинка
|
|
|

25.02.2008, 05:52
|
|
Новичок
Регистрация: 22.09.2007
Сообщений: 9
Провел на форуме: 312775
Репутация:
25
|
|
у меня такая проблема : передаю проге в командной строке IP адрес,допустим 127.0.0.1,но когда начинаю заполнять структуру sockaddr_in, то оказывается что адрес равен 27.0.0.1, куда делся первый символ?
З.Ы. строка вида "proga 127.0.0.1 param1 param2"
|
|
|

25.02.2008, 09:35
|
|
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме: 90595
Репутация:
0
|
|
Сообщение от bons
после получения заголовка можешь просто вызвать
recv( s, response, 1024*32, 0);
еще раз, на этот раз там будет картинка
В этом и проблема. Response содержит 5 символов, при весе картинки 2Кб.
После второго вызова делаю:
Код:
ofstream f_gif;
f_gif.open("1.gif", ios::binary);
f_gif<<response;
f_gif.close();
???Или записывать в файл put'ом???
|
|
|

25.02.2008, 09:54
|
|
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме: 1595333
Репутация:
291
|
|
не. ну почему все перешли на этот си++? хз какая хрень..
делай recv в цикле. насколько я знаю функция возвращяет сколько байтов она прочитала.
получается так.
while (bytes=recv(s, response, 1024)>0) {
d=open("file", O_RDRW);
write(d, response, bytes);
}
так по идее должно получится
|
|
|

25.02.2008, 16:23
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
Сообщение от zythar
не. ну почему все перешли на этот си++? хз какая хрень..
делай recv в цикле. насколько я знаю функция возвращяет сколько байтов она прочитала.
получается так.
while (bytes=recv(s, response, 1024)>0) {
d=open("file", O_RDRW);
write(d, response, bytes);
}
так по идее должно получится
... да потому что такими циклами самими по себе не сделать мало мальски хорошую программу, всем приходится привыкать к реалиям мастдая. Если цикл значит новая нитка(thread).... далее по Рихтеру и С++
а если не нитка а асинхронные сокеты, то далее по Win32socket.faq и С++!
|
|
|

25.02.2008, 20:11
|
|
Участник форума
Регистрация: 21.10.2007
Сообщений: 147
Провел на форуме: 388646
Репутация:
31
|
|
Ламерский вопрос по С++ (Borland Turbo C++)
Возникает событие во второй форме (Unit2.cpp), как заставить выполнятся код, который находится в первой форме (Unit1.cpp) (функцию ну или другое событие).
(Думал создать невидимый чекбокс и нажимать его - но это как-то не правильно) 
|
|
|

25.02.2008, 23:24
|
|
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме: 1595333
Репутация:
291
|
|
сделать функцию в первой форме и при возникновении событии во второй форме вызывать эту функцию?
вначале сделай хидер Unit1.h там опиши функцию, потом имплементацию функции в Unit1.cpp.
дальше инклуди Unit1.h в Unit1.cpp и Unit2.cpp и при событии вызывай ф-цию из Unit1.cpp. посмотрим что произойдет.
несколько абстрактный пример
Unit1.h
Код:
int event_handler(int arg);
Uni1.cpp
Код:
#include "Unit1.h"
int event_handler(int arg);
{
...
}
Unit2.cpp
Код:
#include "Unit1.h"
int main(int argc, char *argv[])
{ ...
if(event) {
event_handler(event);
};
...
}
Последний раз редактировалось zythar; 25.02.2008 в 23:28..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|