![]() |
[c/c++] Новичкам: задаем вопросы
В этой специальной теме новички могут задавать "элементарные" вопросы по синтаксису и прочим начинаниям в языке.
|
Как заставить программу читая файл скрадывакать каждую строку в определенную переменную? (1 строка = 1 переменная)
|
Цитата:
|
27.05.2007 18:14:51, KEZ
KEZ: Код:
#include <stdio.h>27.05.2007 18:15:00, KEZ запости *** я забанен( |
Как программно с помощью с++ обращаться по протоколу http. Как к простым файлам?
пример: FILE *f = fopen( "http://sait.com", "r" ); может вопрос мой некоректен , но я думаю поймут ))) |
Цитата:
от кеза: 27.05.2007 18:43:17, KEZ #include <stdio.h> #include <winsock2.h> // хедер с описанием wsa ф-ий // для ms vc++6.0 и др - подключаем lib'у с импортами wsa ф-ий #pragma comment( lib, "wsock32.lib" ) int main(int argc, char* argv[]) { char request[1024*5]; // буффер под запрос char response[1024]; // буффер под ответ sockaddr_in s_a; WSADATA wd; // структура WSADATA WSAStartup( MAKEWORD( 2, 2 ), &wd ); // инициализируем wsa SOCKET s = socket( AF_INET, SOCK_STREAM, 0 ); // создаем сокет if (s == INVALID_SOCKET) return 255; // если ошибка - выход s_a.sin_addr.s_addr = inet_addr( "89.108.80.80" ); // айпи сервера, в данном случае - античат.ру s_a.sin_port = htons( 80 ); // порт сервера s_a.sin_family = AF_INET; if (connect( s, (struct sockaddr*)&s_a, sizeof( s_a ) ) == SOCKET_ERROR) return 255; // SOCKET_ERROR - невозможно подключится к сереверу char url[] = "/"; // страница char host[] = "antichat.ru"; // хост // формируем запрос sprintf( request, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n", url, host ); send( s, request, strlen( request ), 0 ); // послать запрос recv( s, response, 1023, 0 ); // максимум получить 1023 байта printf( "%s\r\n", response ); // вывести ответ на экран closesocket( s ); // закрываем сокет WSACleanup(); // деинициализируем wsa return 0; } 27.05.2007 18:45:56, KEZ отпиши от меня кроме кода вот что 27.05.2007 18:46:28, KEZ "далее обрезай шапку ответа сервера (HTTP/1.1 200 OK и т.п.), все оставшееся - будет то, что вернул сервер по запрошеному адресу, например /1.txt. Другие варианты с winapi - InternetReadFile(), UrlDownloadToFile() см. msdn..." 27.05.2007 18:45:09, KEZ "альт. вариант - InternetReadFile()" 27.05.2007 18:45:12, KEZ отпиши |
спасибо KEZ и _Great_ ))) дальше я сам поисом
|
Цитата:
Код:
|
Вопрос: idHTTPServer ... сохранение удаленного файла на винте(через браузер)...
TFileStream *fs=new TFileStream(MyFile,fmOpenRead); try { ResponseInfo->ResponseNo=200; ResponseInfo->ContentLength= fs->Size; ResponseInfo->ContentStream=fs; ResponseInfo->Headers->Add("Content-Disposition: attachment; filename=MyFile.exe\r\n"); ... Сохраняет файл , но в начале файла записывает инфо с запроса (Server: Indy, Content-Length и др) , что в свою очредь убивает его работоспособность... как сделать ,чтоб файл нормально записался??? |
у меня немного по сложнее трабл , я отсылаю файл по запросу, а не принимаю ...
Принимает же обычный браузер... считываю же файл для отправки сразу потоком: TFileStream *fs=new TFileStream(MyFile,fmOpenRead); ResponseInfo->ContentStream=fs; //где ResponseInfo - ответ на запрос... забавно, но если убрать строчку : ResponseInfo->Headers->Add("Content-Disposition: attachment; filename=MyFile.exe\r\n"); , то файл сохранится правильно, но под кривым именем и без расширения... |
| Время: 19:35 |