| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > HTTP запросы, пользуя WinSock |
| Автор: bugmenot 7.11.2006, 22:11 | ||||||
| Вот небольшая програма, которая должна читать страницу forum.vingrad.ru/index.php (код в конце поста) Вроде работает, но приходит по чистям (с этим проблем нет), и в каждой части на верх добавляется такая фигня:
Че это такое? Какой у этой фигни формат? Искал инфу про нее, не нашел Ну и еще вопрос
^ Что сюда еще можно/нужно писать? Вот код:
Большое спасибо |
| Автор: bugmenot 11.11.2006, 17:47 | ||
| Вот написал такую прогу, которая записывает forum.vingrad.ru/index.php в test.html (внизу) Функцию ApplyHtmlToFile написал сам, и наверно там очень много ошибок, но вроде работает =) Скажите пожалуйста все ли ОК, что можно исправить, оптимизировать итд. И еще вопрос: Если я хочу сохранить страницу в памяти, как лучше всего это сделать? Идея юзать LocalReAlloc сто раз мне не нравится, плиз посоветуйте Спасибо! =)
|
| Автор: ptr 13.11.2006, 09:38 | ||||
Как-то плохо работает. Программа на ней падает постоянно.
Не хорошо в качестве SOCKET возвращать NULL. Везде, где в main обрабатываешь ошибки забываешь делать closesocket. |
| Автор: bugmenot 13.11.2006, 16:57 | ||||
В смымле вылетает? У меня нормально работает Почему не хорошо? NULL это ноль - 0, т.е. произошла ошибка
Спасибо
|
| Автор: ptr 13.11.2006, 19:10 | ||
В прямой смысле. В 100% запусков происходит Access Violation. Да NULL - ноль, но кто тебе сказал, что для SOCKET это допустимо. Некоторые компиляторы на NULL будут ругаться. С SOCKET лучше работать как с непрозрачным типом, в твоём случае, например, можешь вернуть тот же INVALID_SOCKET.
Так или иначе тебе придётся в памяти создавать некоторый буфер и там хранить содержимое. Ну и соответсвенно уметь изменять размеры буфера. |
| Автор: PyAlexey 12.2.2007, 17:47 | ||||
| Помогите разобраться. Я полный NULL в C++, да не программист вообще. Но вот решил поэксперементировать, написав простенький downloader. Короче, нашёл в инете пример работы с сокетами. Но, аналогично проблеме у автора топика, сервер в случае html выдаёт сначала заголовок, а потом сам текст; а в случае бинарного файла - только заголовок. Как я понимаю, здесь проблема либо в формировании запроса, либо в чтении из сокета. Запрос:
Чтение из сокета:
Как мне получить текстовый и бинарный файл без заголовка? P.S. Просьба не отсылать к чтению спецификации - мне пока этого не требуется. |
| Автор: ptr 14.2.2007, 15:30 |
| 1. Показывай ответы сервера. 2. Не забывай про \r\n. |
| Автор: PyAlexey 14.2.2007, 17:04 | ||||
Если запрашивать страницу, то всё нормально, за исключением ненужного мне заголовка.
Если запрашивать бинарный файл, то выдаётся только заголовок - и всё, программа удачно завершается.
Если использовать \r\n вместо \n и \n\n, то всё останавливается на чтении из сокета... (( P.S. http://www.codenet.ru/progr/visualc/socket.php, который я использовал. |
| Автор: ptr 15.2.2007, 18:41 |
Этот заголовок очень даже нужный. Он содержит много полезной информации. Никак. Ты сначала должен получить заголовок, проанализировать его (распарсить, посмотреть нет ли ошибок и т.д.) и уже потом получать всё остальное. Посмотри в отладчике (ну или обычным printf) что происходит в данный момент (например что возвращает recv). Перевод строки должен быть \r\n. Интересно знать в какой раз автор работает с сокетами, да и вообще программирует PyAlexey, а что ты хочешь написать то? |