Вход на сайт
С/C++ HTTP request, хотя бы простой запрос!
07.12.10 13:41
Вот пытался пару дней уже как найти инфу но, или хотят за готовые бибиотеки по 150$ в год или нарываюсь на туториумы, где куча всего, но там можно неделями изучать.
Помню простейшие операции с сылками, ну там подгрузить фотку с веб ресурса, можно в С# без проблем сделать. Неужели в C++ все так плохо, что нужно писать 50 классов и 100 методов, чтобы оправить запрос в веб?
Помню простейшие операции с сылками, ну там подгрузить фотку с веб ресурса, можно в С# без проблем сделать. Неужели в C++ все так плохо, что нужно писать 50 классов и 100 методов, чтобы оправить запрос в веб?
NEW 07.12.10 14:10
в ответ Bigfan 07.12.10 13:41
NEW 07.12.10 14:10
в ответ Bigfan 07.12.10 13:55
значит начну с написания сокета
------
Врядли ты сможешь это сделать. Бо, все давно написано и доступно.
Написать надо две-три строки...
Правда, можно написать свои обертки для системных сокетов. Будет, возможно,
более удобно. Правда головная боль обеспечена - там достаточно разнообразных
связанных параметров и прочих нюансов...
Для этого нужно целый веб клиент писать?
------
Может проще взять готовый клиент? Ну тот же ИЕ... в виде ActiveX...
Хммм... у меня такое впечатление, что понимание сути обмена по HTTP у тебя отсутствует.
Возьми обычный ТЕЛНЕТ и получи с его помощью интересующий тебя документ - поймешь
как оно бегает туда-сюда...
------
Врядли ты сможешь это сделать. Бо, все давно написано и доступно.
Написать надо две-три строки...
Правда, можно написать свои обертки для системных сокетов. Будет, возможно,
более удобно. Правда головная боль обеспечена - там достаточно разнообразных
связанных параметров и прочих нюансов...
Для этого нужно целый веб клиент писать?
------
Может проще взять готовый клиент? Ну тот же ИЕ... в виде ActiveX...
Хммм... у меня такое впечатление, что понимание сути обмена по HTTP у тебя отсутствует.
Возьми обычный ТЕЛНЕТ и получи с его помощью интересующий тебя документ - поймешь
как оно бегает туда-сюда...
NEW 07.12.10 14:50
openbook.galileocomputing.de/c_von_a_bis_z/025_c_netzwerkprogrammierung_0...
Речь об использовании готового библиотечного сокета?
www.codersource.net/mfc/activex-com-dcom/creating-custom-activex-controls...
Что мне с этим делать? Я думал, просто в тени запустить ие, тот выполянет запрос и передает обратно?
Речь об использовании готового библиотечного сокета?
www.codersource.net/mfc/activex-com-dcom/creating-custom-activex-controls...
Что мне с этим делать? Я думал, просто в тени запустить ие, тот выполянет запрос и передает обратно?
NEW 07.12.10 15:02
в ответ AlexOtt 07.12.10 14:54
boost.asio - это набор библиотек? Качать тут http://sourceforge.net/projects/boost/files/boost/1.45.0/
NEW 07.12.10 15:04
в ответ Bigfan 07.12.10 14:50
Речь об использовании готового библиотечного сокета?
------
Увы, Я по-немецки не читаю.
Судя по использованным заголовкам - да, используется виндосовский сокет.
Насколько это тебе поможет - не знаю - ты до сих пор не указал версию
используемого языка.
Что мне с этим делать?
------
Эээ... читать. потом - пробовать. потом, возможно, кинуть в мусорник.
Бо, пока ты не сформулируешь однозначно - что тебе надо? - можно и
ничего не делать - результат будет одинаковый.
------
Увы, Я по-немецки не читаю.
Судя по использованным заголовкам - да, используется виндосовский сокет.
Насколько это тебе поможет - не знаю - ты до сих пор не указал версию
используемого языка.
Что мне с этим делать?
------
Эээ... читать. потом - пробовать. потом, возможно, кинуть в мусорник.
Бо, пока ты не сформулируешь однозначно - что тебе надо? - можно и
ничего не делать - результат будет одинаковый.
NEW 07.12.10 15:09
в ответ Murr 07.12.10 15:04
Для начала просто открыть файл, который находится не на локальном ресурсе как тут в примере, а на сервере, пусть на германке лежит.
В ответ на:
/* fopen example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}
return 0;
}
/* fopen example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}
return 0;
}
NEW 07.12.10 15:11
в ответ Bigfan 07.12.10 15:06
Какой смысл в этом геморе? Сначала сейчас ты будешь апи сокетов изучать, потом библиотеку работающую с сокетами, потом спеки на http протокол. Возьми что-нибудь попроще, менее рутинное и более интересное. Практический смысл в твоей задаче нулевой на мой взгляд.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:15
в ответ voxel3d 07.12.10 15:11
Тут согласен, я уже сам понял, что мне нужно будет недели, чтобы мать часть учить, а толку не факт, что будет. Просто я думал, что хотя бы простейшие операции как подгрузить картинку с веб ресурса,, можно выполнить без каких-то сложностей, используя ст. библиотеки. Но видимо C++ для этого предлагает 100% готовых решений.
NEW 07.12.10 15:19
в ответ Bigfan 07.12.10 15:09
Для начала просто открыть файл, который находится не на локальном ресурсе
------
Ах, это... подмапь нужный ресурс как диск и работай с ним обычным образом...
Правда, через два шага ты уткнешься в ограниченность метода, но он позволяет
выполнить сформулированную тобой задачу...
А вообще - не парь мозг ни себе, ни сообществу - задачи обмена по сети не изучаются
за пару часов. Даже за пару лет все нюансы не выловишь. Да и не надо оно...
------
Ах, это... подмапь нужный ресурс как диск и работай с ним обычным образом...
Правда, через два шага ты уткнешься в ограниченность метода, но он позволяет
выполнить сформулированную тобой задачу...
А вообще - не парь мозг ни себе, ни сообществу - задачи обмена по сети не изучаются
за пару часов. Даже за пару лет все нюансы не выловишь. Да и не надо оно...
NEW 07.12.10 15:21
в ответ Bigfan 07.12.10 15:15
Да просто для того чтобы получить картинку с сревера все вменяемые люди используют perl или curl, или иже с ними.
В принципе, открыть сокет и скинуть туда то, что тебе Мур посоветовал с телнетом и получить картинку - не проблема. Не проблема и этот поток байтов потом в файл залить, который станет жипегом. Но лучше определись точно, чего ты хочешь и выбери что-нибудь для реализации поинтереснее.
В принципе, открыть сокет и скинуть туда то, что тебе Мур посоветовал с телнетом и получить картинку - не проблема. Не проблема и этот поток байтов потом в файл залить, который станет жипегом. Но лучше определись точно, чего ты хочешь и выбери что-нибудь для реализации поинтереснее.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:27
в ответ voxel3d 07.12.10 15:21
То есть, прога в определенный момент запускает скрипт, который качает и делает нужные запросы? А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?
Вобщем, забить на http запросы с помощью с++?
Вобщем, забить на http запросы с помощью с++?
NEW 07.12.10 15:35
Я тебе предложил сменить тему изучения, она несколько неудачна. Говоря про perl / curl имел в виду, что эти инструменты более приспособлены для того, чтобы чё-то там по http получать, чем писать клиента на плюсах.
в ответ Bigfan 07.12.10 15:27
В ответ на:
То есть, прога в определенный момент запускает скрипт, который качает и делает нужные запросы? А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?
Вобщем, забить на http запросы с помощью с++?
То есть, прога в определенный момент запускает скрипт, который качает и делает нужные запросы? А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?
Вобщем, забить на http запросы с помощью с++?
Я тебе предложил сменить тему изучения, она несколько неудачна. Говоря про perl / curl имел в виду, что эти инструменты более приспособлены для того, чтобы чё-то там по http получать, чем писать клиента на плюсах.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:38
в ответ gendy 07.12.10 15:32
Нет, я просто хотел знать, годится ли c++ для таких простейших вещей. На данный момент понял, что все не так просто.
Я бы с удовольствием пользовался бы перечисленными способами, но опять же нужно учить матчасть. Я просто предположил, что выполнить в с++ будет легче чем изучать еще что-то новое.
Но как оказалось, ушел в дебри. Сырой видимо еще для подобных погружений.
Я бы с удовольствием пользовался бы перечисленными способами, но опять же нужно учить матчасть. Я просто предположил, что выполнить в с++ будет легче чем изучать еще что-то новое.
Но как оказалось, ушел в дебри. Сырой видимо еще для подобных погружений.
NEW 07.12.10 15:44
Если он пытается чему-то научиться и выбрал тему сетей, ему надо-таки апи сокетов изучать и спеки протоколов. Толку от "вот тебе способ сделать твою безумную и нахрен ненужную хрень" мало. Да и взять ту же асию: www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/client/syn... -
в ответ Simple 07.12.10 15:17
В ответ на:
Те библиотеки, ссылки на которые дал я и Леша, именно это и дают. Никакой надобности изучать низкоуровневые операции нет, или у тебя именно такое задание?
Те библиотеки, ссылки на которые дал я и Леша, именно это и дают. Никакой надобности изучать низкоуровневые операции нет, или у тебя именно такое задание?
Если он пытается чему-то научиться и выбрал тему сетей, ему надо-таки апи сокетов изучать и спеки протоколов. Толку от "вот тебе способ сделать твою безумную и нахрен ненужную хрень" мало. Да и взять ту же асию: www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/client/syn... -
std::ostream request_stream(&request);
request_stream << "GET " << argv[2] << " HTTP/1.0\r\n";
request_stream << "Host: " << argv[1] << "\r\n";
request_stream << "Accept: */*\r\n";
request_stream << "Connection: close\r\n\r\n";
это - низкоуровневая деталь из рееализации http протокола, а весь остальной код недалеко ушёл от апи сокетов, даром, что в плюсы его завернули.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:45
в ответ Bigfan 07.12.10 15:38
сделать можно всё, но С++ и отличается работой с классами, а вот писать собственные или использовать готовые библиотеки это уже другое дело,
в принципе не проблема написать и собственный базируясь на winsock.h , но зачем, если популярные компайлеры имеют готовые библиотеки ,
где достаточно подключить класс и готово
в принципе не проблема написать и собственный базируясь на winsock.h , но зачем, если популярные компайлеры имеют готовые библиотеки ,
где достаточно подключить класс и готово
Фашизм будет разбит
Человека карают только те боги, в которых он верит
NEW 07.12.10 15:49
Лень смотреть, но на 99% уверен, что работа с сетью в том же фф на плюсах сделана. В целом доля кода не на С++ в фф огромна, очень много жабаскрипта, но сеть на плюсах должна быть.
в ответ gendy 07.12.10 15:42
В ответ на:
их на голом С++ и не пишут.
их на голом С++ и не пишут.
Лень смотреть, но на 99% уверен, что работа с сетью в том же фф на плюсах сделана. В целом доля кода не на С++ в фф огромна, очень много жабаскрипта, но сеть на плюсах должна быть.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:53
Годится. Но нафиг не нужно, если ты не пишешь свою аську на С++ или браузер.
Это не простейшие вещи. Это сокеты, протоколы и какая-нибудь библиотека классов - в топике их приводили, скрывающая детали низкоуровневых апи.
в ответ Bigfan 07.12.10 15:38
В ответ на:
Нет, я просто хотел знать, годится ли c++ для таких простейших вещей.
Нет, я просто хотел знать, годится ли c++ для таких простейших вещей.
Годится. Но нафиг не нужно, если ты не пишешь свою аську на С++ или браузер.
Это не простейшие вещи. Это сокеты, протоколы и какая-нибудь библиотека классов - в топике их приводили, скрывающая детали низкоуровневых апи.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 07.12.10 15:55
в ответ voxel3d 07.12.10 15:49
может я неправильно выразился, я имел ввиду что никто под один реквест протоколы на С++ не пишет, даже в том же ФФ в Gecko наверняка есть готовая библиотека для работы с сетью которая и используется во всех случаях.
Фашизм будет разбит
Человека карают только те боги, в которых он верит
NEW 07.12.10 16:27
в ответ gendy 07.12.10 15:55
NEW 07.12.10 16:58
в ответ Bigfan 07.12.10 16:27
это чтоли?
// Open a connection
System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(_URL);
_HttpWebRequest.AllowWriteStreamBuffering = true;
// You can also specify additional header values like the user agent or the referer: (Optional)
_HttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
_HttpWebRequest.Referer = "http://www.google.com/";
// set timeout for 20 seconds (Optional)
_HttpWebRequest.Timeout = 20000;
// Request response:
System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse();
// Open data stream:
System.IO.Stream _WebStream = _WebResponse.GetResponseStream();
// convert webstream to image
_tmpImage = Image.FromStream(_WebStream);
// Cleanup
_WebResponse.Close();
_WebResponse.Close();
Фашизм будет разбит
Человека карают только те боги, в которых он верит
NEW 07.12.10 17:06
Этот кусок я давно нашел в сети, главное, что работает. При загрузке формы, в picturebox2 подгружается картинка с интернета, при нажатии на кнопку, обновляется на другую. Эти методы в конце уже.




