Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

С/C++ HTTP request, хотя бы простой запрос!

2590  1 2 3 4 все
Bigfan коренной житель07.12.10 13:41
Bigfan
07.12.10 13:41 
Вот пытался пару дней уже как найти инфу но, или хотят за готовые бибиотеки по 150$ в год или нарываюсь на туториумы, где куча всего, но там можно неделями изучать.
Помню простейшие операции с сылками, ну там подгрузить фотку с веб ресурса, можно в С# без проблем сделать. Неужели в C++ все так плохо, что нужно писать 50 классов и 100 методов, чтобы оправить запрос в веб?
#1 
Murr патриот07.12.10 13:46
Murr
NEW 07.12.10 13:46 
в ответ Bigfan 07.12.10 13:41
Неужели в C++ все так плохо, что нужно писать 50 классов и 100 методов, чтобы оправить запрос в веб?
------
Ничего не понял.
Сокет создать можешь? Записать в него текст?
Что тогда тебе еще надо?
#2 
Bigfan коренной житель07.12.10 13:55
Bigfan
NEW 07.12.10 13:55 
в ответ Murr 07.12.10 13:46
Не занимался я еще такими вещами, значит начну с написания сокета, а нужно обязательно перерасчет айпи делать, чтобы потом нормальную ссылку задавать?
Ну вот допустим, хочу скачать с германки мой txt фаил. Для этого нужно целый веб клиент писать?
#3 
voxel3d патриот07.12.10 13:56
voxel3d
NEW 07.12.10 13:56 
в ответ Bigfan 07.12.10 13:41
Гвозди можно забивать и микроскопом, но зачем?
Dropbox - средство синхронизации и бэкапа файлов.
#4 
Simple Nothing is f*cked07.12.10 14:10
Simple
Murr патриот07.12.10 14:10
Murr
NEW 07.12.10 14:10 
в ответ Bigfan 07.12.10 13:55
значит начну с написания сокета
------
Врядли ты сможешь это сделать. Бо, все давно написано и доступно.
Написать надо две-три строки...
Правда, можно написать свои обертки для системных сокетов. Будет, возможно,
более удобно. Правда головная боль обеспечена - там достаточно разнообразных
связанных параметров и прочих нюансов...
Для этого нужно целый веб клиент писать?
------
Может проще взять готовый клиент? Ну тот же ИЕ... в виде ActiveX...
Хммм... у меня такое впечатление, что понимание сути обмена по HTTP у тебя отсутствует.
Возьми обычный ТЕЛНЕТ и получи с его помощью интересующий тебя документ - поймешь
как оно бегает туда-сюда...
#6 
Bigfan коренной житель07.12.10 14:50
Bigfan
NEW 07.12.10 14:50 
в ответ Murr 07.12.10 14:10, Последний раз изменено 07.12.10 14:54 (Bigfan)
openbook.galileocomputing.de/c_von_a_bis_z/025_c_netzwerkprogrammierung_0...
Речь об использовании готового библиотечного сокета?
www.codersource.net/mfc/activex-com-dcom/creating-custom-activex-controls...
Что мне с этим делать? Я думал, просто в тени запустить ие, тот выполянет запрос и передает обратно?
#7 
AlexOtt знакомое лицо07.12.10 14:54
AlexOtt
NEW 07.12.10 14:54 
в ответ Bigfan 07.12.10 13:41, Последний раз изменено 07.12.10 14:57 (AlexOtt)
boost.asio + cpp-netlib (как уже Simple указал...)
или еще libpion, тоже с использованием asio
#8 
Simple Nothing is f*cked07.12.10 14:54
Simple
NEW 07.12.10 14:54 
в ответ Bigfan 07.12.10 14:50
Не обращай внимание на его треп. Я же тебе дал ссылку, используй.
#9 
Bigfan коренной житель07.12.10 14:56
Bigfan
NEW 07.12.10 14:56 
в ответ Simple 07.12.10 14:54
Попробую!
#10 
Knusprig постоялец07.12.10 14:59
Knusprig
NEW 07.12.10 14:59 
в ответ Bigfan 07.12.10 13:41
А че за проект?
Веб сервер надо написать?
Девки спорили на даче о свойствах ряда Фибоначчи
#11 
Bigfan коренной житель07.12.10 15:00
Bigfan
NEW 07.12.10 15:00 
в ответ Knusprig 07.12.10 14:59
Нет, просто учусь!
#12 
Bigfan коренной житель07.12.10 15:02
Bigfan
NEW 07.12.10 15:02 
в ответ AlexOtt 07.12.10 14:54
boost.asio - это набор библиотек? Качать тут http://sourceforge.net/projects/boost/files/boost/1.45.0/
#13 
voxel3d патриот07.12.10 15:03
voxel3d
NEW 07.12.10 15:03 
в ответ Bigfan 07.12.10 13:41
Ты что делаешь-то, что тебе понадобилось на С++ клиента писать?
Dropbox - средство синхронизации и бэкапа файлов.
#14 
Murr патриот07.12.10 15:04
Murr
NEW 07.12.10 15:04 
в ответ Bigfan 07.12.10 14:50
Речь об использовании готового библиотечного сокета?
------
Увы, Я по-немецки не читаю.
Судя по использованным заголовкам - да, используется виндосовский сокет.
Насколько это тебе поможет - не знаю - ты до сих пор не указал версию
используемого языка.
Что мне с этим делать?
------
Эээ... читать. потом - пробовать. потом, возможно, кинуть в мусорник.
Бо, пока ты не сформулируешь однозначно - что тебе надо? - можно и
ничего не делать - результат будет одинаковый.
#15 
Bigfan коренной житель07.12.10 15:06
Bigfan
NEW 07.12.10 15:06 
в ответ voxel3d 07.12.10 15:03
да в FH в этом семесте c++ сдаю, вот и устроил всем тут промывку мозгов :)) А главное, себя парю.
#16 
Bigfan коренной житель07.12.10 15:09
Bigfan
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;
}

#17 
voxel3d патриот07.12.10 15:11
voxel3d
NEW 07.12.10 15:11 
в ответ Bigfan 07.12.10 15:06
Какой смысл в этом геморе? Сначала сейчас ты будешь апи сокетов изучать, потом библиотеку работающую с сокетами, потом спеки на http протокол. Возьми что-нибудь попроще, менее рутинное и более интересное. Практический смысл в твоей задаче нулевой на мой взгляд.
Dropbox - средство синхронизации и бэкапа файлов.
#18 
Murr патриот07.12.10 15:12
Murr
NEW 07.12.10 15:12 
в ответ AlexOtt 07.12.10 14:54
Эээ... а если у него Managet C++?
#19 
Bigfan коренной житель07.12.10 15:15
Bigfan
NEW 07.12.10 15:15 
в ответ voxel3d 07.12.10 15:11
Тут согласен, я уже сам понял, что мне нужно будет недели, чтобы мать часть учить, а толку не факт, что будет. Просто я думал, что хотя бы простейшие операции как подгрузить картинку с веб ресурса,, можно выполнить без каких-то сложностей, используя ст. библиотеки. Но видимо C++ для этого предлагает 100% готовых решений.
#20 
Simple Nothing is f*cked07.12.10 15:17
Simple
NEW 07.12.10 15:17 
в ответ Bigfan 07.12.10 15:15
Те библиотеки, ссылки на которые дал я и Леша, именно это и дают. Никакой надобности изучать низкоуровневые операции нет, или у тебя именно такое задание?
#21 
Murr патриот07.12.10 15:19
Murr
NEW 07.12.10 15:19 
в ответ Bigfan 07.12.10 15:09
Для начала просто открыть файл, который находится не на локальном ресурсе
------
Ах, это... подмапь нужный ресурс как диск и работай с ним обычным образом...
Правда, через два шага ты уткнешься в ограниченность метода, но он позволяет
выполнить сформулированную тобой задачу...
А вообще - не парь мозг ни себе, ни сообществу - задачи обмена по сети не изучаются
за пару часов. Даже за пару лет все нюансы не выловишь. Да и не надо оно...
#22 
Bigfan коренной житель07.12.10 15:20
Bigfan
NEW 07.12.10 15:20 
в ответ Simple 07.12.10 15:17
Ну так грузить те библио, которые 70 мб весят? Задания никакого нету. Просто пытаюсь чему-то научиться. Интересно стало.
#23 
voxel3d патриот07.12.10 15:21
voxel3d
NEW 07.12.10 15:21 
в ответ Bigfan 07.12.10 15:15
Да просто для того чтобы получить картинку с сревера все вменяемые люди используют perl или curl, или иже с ними.
В принципе, открыть сокет и скинуть туда то, что тебе Мур посоветовал с телнетом и получить картинку - не проблема. Не проблема и этот поток байтов потом в файл залить, который станет жипегом. Но лучше определись точно, чего ты хочешь и выбери что-нибудь для реализации поинтереснее.
Dropbox - средство синхронизации и бэкапа файлов.
#24 
Simple Nothing is f*cked07.12.10 15:23
Simple
NEW 07.12.10 15:23 
в ответ Bigfan 07.12.10 15:20
Конечно. Что такое 70 мб? boost - полезная штука.
#25 
Bigfan коренной житель07.12.10 15:27
Bigfan
NEW 07.12.10 15:27 
в ответ voxel3d 07.12.10 15:21
То есть, прога в определенный момент запускает скрипт, который качает и делает нужные запросы? А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?
Вобщем, забить на http запросы с помощью с++?
#26 
gendy Dinosaur07.12.10 15:32
gendy
NEW 07.12.10 15:32 
в ответ Bigfan 07.12.10 15:27
это должна быть программа на чистом С++ ? почему нельзя использовать MFC , NET или VCL?

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#27 
Simple Nothing is f*cked07.12.10 15:33
Simple
NEW 07.12.10 15:33 
в ответ Bigfan 07.12.10 15:27
Ты безнадежен.
#28 
gendy Dinosaur07.12.10 15:33
gendy
NEW 07.12.10 15:33 
в ответ Bigfan 07.12.10 15:27
В ответ на:
А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?

даже броузеры так делают.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#29 
voxel3d патриот07.12.10 15:35
voxel3d
NEW 07.12.10 15:35 
в ответ Bigfan 07.12.10 15:27
В ответ на:
То есть, прога в определенный момент запускает скрипт, который качает и делает нужные запросы? А как результат портировать в программу? Или скрипт откладывает файлик локально и после я могу с ним работать?
Вобщем, забить на http запросы с помощью с++?

Я тебе предложил сменить тему изучения, она несколько неудачна. Говоря про perl / curl имел в виду, что эти инструменты более приспособлены для того, чтобы чё-то там по http получать, чем писать клиента на плюсах.
Dropbox - средство синхронизации и бэкапа файлов.
#30 
voxel3d патриот07.12.10 15:38
voxel3d
NEW 07.12.10 15:38 
в ответ gendy 07.12.10 15:33
В ответ на:
даже броузеры так делают.

Браузеры, всё-таки, сами тянут.
Dropbox - средство синхронизации и бэкапа файлов.
#31 
Bigfan коренной житель07.12.10 15:38
Bigfan
NEW 07.12.10 15:38 
в ответ gendy 07.12.10 15:32
Нет, я просто хотел знать, годится ли c++ для таких простейших вещей. На данный момент понял, что все не так просто.
Я бы с удовольствием пользовался бы перечисленными способами, но опять же нужно учить матчасть. Я просто предположил, что выполнить в с++ будет легче чем изучать еще что-то новое.
Но как оказалось, ушел в дебри. Сырой видимо еще для подобных погружений.
#32 
Bigfan коренной житель07.12.10 15:40
Bigfan
NEW 07.12.10 15:40 
в ответ Simple 07.12.10 15:33
thx То, что я нуб, не означает, что все потеряно!
#33 
Simple Nothing is f*cked07.12.10 15:41
Simple
NEW 07.12.10 15:41 
в ответ Bigfan 07.12.10 15:40
Ты бы сначала попытался, а потом вышел на форум с вопросами. Толку больше будет.
Возникает впечатление, что тебе хочется, чтобы за тебя написали готовое решение.
#34 
Bigfan коренной житель07.12.10 15:41
Bigfan
NEW 07.12.10 15:41 
в ответ voxel3d 07.12.10 15:35
Знаешь, чтобы выбрать подходящий инструмент для конкретных задач, нужно хотябы поверхностно знать, что и как. Этих знаний мне и не хватает.
#35 
gendy Dinosaur07.12.10 15:42
gendy
NEW 07.12.10 15:42 
в ответ voxel3d 07.12.10 15:38
В ответ на:
Браузеры, всё-таки, сами тянут.

их на голом С++ и не пишут.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#36 
Bigfan коренной житель07.12.10 15:42
Bigfan
NEW 07.12.10 15:42 
в ответ Simple 07.12.10 15:41
Нет, так неинтересно. Халявы не ищу. Просто не знал, с чего начать. Теперь буду пытаться.
#37 
Simple Nothing is f*cked07.12.10 15:42
Simple
NEW 07.12.10 15:42 
в ответ gendy 07.12.10 15:42
LOL а на чем их пишут? На голом С?
#38 
Simple Nothing is f*cked07.12.10 15:44
Simple
NEW 07.12.10 15:44 
в ответ Bigfan 07.12.10 15:42
Ну, так в бой! Результат вывесишь :)
#39 
voxel3d патриот07.12.10 15:44
voxel3d
NEW 07.12.10 15:44 
в ответ 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 - средство синхронизации и бэкапа файлов.
#40 
gendy Dinosaur07.12.10 15:45
gendy
NEW 07.12.10 15:45 
в ответ Bigfan 07.12.10 15:38
сделать можно всё, но С++ и отличается работой с классами, а вот писать собственные или использовать готовые библиотеки это уже другое дело,
в принципе не проблема написать и собственный базируясь на winsock.h , но зачем, если популярные компайлеры имеют готовые библиотеки ,
где достаточно подключить класс и готово

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#41 
Murr патриот07.12.10 15:46
Murr
NEW 07.12.10 15:46 
в ответ Bigfan 07.12.10 15:38
Сырой видимо еще для подобных погружений.
------
Прими как данное - в программинге ты будешь сырым пожизненно...
#42 
AlexOtt знакомое лицо07.12.10 15:48
AlexOtt
NEW 07.12.10 15:48 
в ответ Bigfan 07.12.10 15:02
да, можно скачать в составе boost'а, а можно использовать отдельно
#43 
voxel3d патриот07.12.10 15:49
voxel3d
NEW 07.12.10 15:49 
в ответ gendy 07.12.10 15:42
В ответ на:
их на голом С++ и не пишут.

Лень смотреть, но на 99% уверен, что работа с сетью в том же фф на плюсах сделана. В целом доля кода не на С++ в фф огромна, очень много жабаскрипта, но сеть на плюсах должна быть.
Dropbox - средство синхронизации и бэкапа файлов.
#44 
Simple Nothing is f*cked07.12.10 15:49
Simple
NEW 07.12.10 15:49 
в ответ voxel3d 07.12.10 15:44
Верно, но там еще ссылка была ;)
#45 
AlexOtt знакомое лицо07.12.10 15:52
AlexOtt
NEW 07.12.10 15:52 
в ответ Bigfan 07.12.10 15:15
в C++ стандартная библиотека очень маленькая в отличии от жабы и С шарп. Boost - это такое неофициальное дополнение к стандартной библиотеке, хотя некоторые компоненты из него будут включены в следующий стандарт C++
#46 
voxel3d патриот07.12.10 15:53
voxel3d
NEW 07.12.10 15:53 
в ответ Bigfan 07.12.10 15:38
В ответ на:
Нет, я просто хотел знать, годится ли c++ для таких простейших вещей.

Годится. Но нафиг не нужно, если ты не пишешь свою аську на С++ или браузер.
Это не простейшие вещи. Это сокеты, протоколы и какая-нибудь библиотека классов - в топике их приводили, скрывающая детали низкоуровневых апи.
Dropbox - средство синхронизации и бэкапа файлов.
#47 
AlexOtt знакомое лицо07.12.10 15:53
AlexOtt
NEW 07.12.10 15:53 
в ответ voxel3d 07.12.10 15:49
хром еще вспомни...
#48 
gendy Dinosaur07.12.10 15:55
gendy
NEW 07.12.10 15:55 
в ответ voxel3d 07.12.10 15:49
может я неправильно выразился, я имел ввиду что никто под один реквест протоколы на С++ не пишет, даже в том же ФФ в Gecko наверняка есть готовая библиотека для работы с сетью которая и используется во всех случаях.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#49 
Simple Nothing is f*cked07.12.10 15:55
Simple
NEW 07.12.10 15:55 
в ответ AlexOtt 07.12.10 15:53
И Оперу, вероятно :)
#50 
AlexOtt знакомое лицо07.12.10 15:59
AlexOtt
NEW 07.12.10 15:59 
в ответ Simple 07.12.10 15:55
и IE насколько я понимаю полностью на плюсах
#51 
Simple Nothing is f*cked07.12.10 15:59
Simple
NEW 07.12.10 15:59 
в ответ AlexOtt 07.12.10 15:59
Даже щас, в эпоху дотнета?
#52 
Knusprig постоялец07.12.10 16:03
Knusprig
NEW 07.12.10 16:03 
в ответ AlexOtt 07.12.10 15:59
А я думал все майкрософтовское написано на бейсике.
Изредка на вижуал бейсике.
Девки спорили на даче о свойствах ряда Фибоначчи
#53 
AlexOtt знакомое лицо07.12.10 16:03
AlexOtt
NEW 07.12.10 16:03 
в ответ Simple 07.12.10 15:59
насколько я понял из разговоров - да. Офис-то точно на С++, я недавно в MS на митинге был
#54 
Simple Nothing is f*cked07.12.10 16:07
Simple
NEW 07.12.10 16:07 
в ответ AlexOtt 07.12.10 16:03
Сколько ж там LoC?.. 10 миллионов, наверно.
#55 
Bigfan коренной житель07.12.10 16:27
Bigfan
NEW 07.12.10 16:27 
в ответ gendy 07.12.10 15:55
Ну вот примерно это чудо я хотел в с++ , вроде отговорил себя уже.
#56 
AlexOtt знакомое лицо07.12.10 16:29
AlexOtt
NEW 07.12.10 16:29 
в ответ Simple 07.12.10 16:07
не знаю честно говоря, мне кажется что больше может быть. у нас старая версия нашей софтины больше миллиона строк
#57 
Simple Nothing is f*cked07.12.10 16:36
Simple
NEW 07.12.10 16:36 
в ответ AlexOtt 07.12.10 16:29
Кстати, а как подсчитать по-простому?
#58 
AlexOtt знакомое лицо07.12.10 16:54
AlexOtt
NEW 07.12.10 16:54 
в ответ Simple 07.12.10 16:36
sloccount
#59 
gendy Dinosaur07.12.10 16:58
gendy
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();


Фашизм будет разбит


Человека карают только те боги, в которых он верит

#60 
Bigfan коренной житель07.12.10 17:06
Bigfan
NEW 07.12.10 17:06 
в ответ gendy 07.12.10 16:58, Последний раз изменено 07.12.10 17:06 (Bigfan)
Этот кусок я давно нашел в сети, главное, что работает. При загрузке формы, в picturebox2 подгружается картинка с интернета, при нажатии на кнопку, обновляется на другую. Эти методы в конце уже.
#61 
Simple Nothing is f*cked07.12.10 20:33
Simple
NEW 07.12.10 20:33 
в ответ AlexOtt 07.12.10 16:54, Последний раз изменено 07.12.10 21:19 (Simple)
Спасибо.
Он под виндой цыгвин требует, блин.
ps
cloc работает. 600к получилось, однако.
#62 
1 2 3 4 все