![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Здравствуйте
У меня в следующем проблема: написал сервер (на локальном компе 127.0.0.1 на порт 80) Теперь когда клиент на сервер идет, устанавливается соединение и я ему посылаю картинку. Вот как я это делаю strcpy(szSendBuff, "<h2>hello</h2><img src='/mesto kartinki na moem kompe/pic1.jpg'>"); ret= send(sock, szSendBuff,strlen(szSendBuff),0); Картинка отображается, но мне сказали что токо потау!! (ВНИМАНИЕ) что это работает на локальном компе, еслиб из ругого компа подключились, то у них картинка не отобразилась бы, мол это делается уже по иной структуре И сказали про след. структуру:... В начале идет просто запрос с картинкой strcpy(szSendBuff, "<h2>hello</h2><img src='/адреса нет/pic1.jpg'>"); а потом клиент должен отправить ответ запрос что мол где находится картинка и я должен дальше отправить уже адрес. Прошу помочь..разьяснить все эти моменты. И еще один момент когда я вместо картинки скажем пошлю апплет , указав его место на своем компе (в данном случае в текущем каталоге) strcpy(szSendBuff, "<center><applet code='WelcomeApplet.class' width='400' height='100'></applet></center>"); то он должен как и картинку е го показать (хотя бы потаму что мы на локальном компе сервер наш), но апплет не показывает..(с апплетом вообще-то все ок, в отдельном html доке он нормально отображается, а так черер запрос - нет) Почему?.. Вот..очень прошу помочь. код не особо важен..но все же..
Это сообщение отредактировал(а) Сириус - 16.4.2007, 19:58 |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: нет Всего: 24 |
Совет: почитай повнимательней документацию по http и включи здравый смысл.
Как по-твоему картинка попадет на удаленный комп? Клиент должен послать get-запрос с адресом картинки, а сервер должен в ответе вернуть ему эту картинку, именно саму картинку, а не ее адрес (за подробностями обращайся к спецификации http). С апплетом тоже самое: код апплета нужно передават в ответ на запрос клиента. Кстати, на локальном машине твой апплет не работает скорее всего потому, что клиент не может его найти (ты ведь не указывал полный путь к файлу апплета). |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Странно, я читал что можно в поле Location: ставить скажем файл или тип MIME и тогда сервер оттуда сам вытащит и даст клиенту.
Ну ладно, но как у меня придет запрос на картинку?..в начале идет обычный запрос..(при соединении). Потом должен идти ответ от сервера типа с кодом состояние 300-399 что означает что клиент должен переадресовать свой запрос, и уже на картинку, чтоб я ему потом ее послал. Так? Ну ладно..пойду читать RFC. Просто его очень много по HTTP, если вдруг знаешь наизусть и можешь привести пример запросов - ответов именно с вариантом картинки или апплета (апплет там полный путь указан кстати) , то пожалуйста.. |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
А при чём здесь HTTP? Протокол HTTP служит для передачи данных. Надо читать спецификацию не HTTP, а HTML.
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Неужели никто не разбирается в этом деле?..
likehood ptr написал сервер на С++. Он ждет подключений на 80 порт. Когда кто-то набирает ( у меня на компе) адрес 127.0.0.1 то подключается к моему жалкому серверу. И тут мой невероятно сложнейший вопрос.....Как сделать вывод картинок (если больше чем одна, да даже хотя бы одну). ? Когда клиент (в данном случае браузер IE) подключается к серверу, он посылает запрос. Могу привести код запроса, но стандартный запрос, ничего особого. Теперь, сервер должен послать ему тАКОЙ отклик чтоб могла отобразится моя картинка, я пробовал разными способами и RFC читал, но не получается. . Фуф.. ![]() Какой отклик слать чтобы клиент получил чертову картинку <img src='adres/pic1.jpg'> и при этом чтоб еще одну мог получить картинку?..надеюсь никто не сердиться на вопрос. |
|||
|
||||
ptr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Клиент(IE) тебе шлёт GET запрос. Тебе лишь нужно правильно его обрабатывать.
Например: Запрос
Ответ
Картинку кстати надо читать как бинарный файл. Да и чтобы посмотреть реальные запросы/ответы можно воспользоваться http://web-sniffer.net/. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
||||
|
|||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Спасибо ptr ! Но дело в том что клиент не посылает мне этого запроса..он даже не в курсе что у меня картинка есть..вот в этом вся проблема, я должен ему как-то сообщить что имею картинку, чтоб потом он послал запрос на эту картинку. Я пробовал, но у меня не получается..первый запрос идет на общую страничку.. ( / или скажем index.html ), вот как сообщить клиенту, чтоб он запрос кинул на картинку, чтоб потом я ему его послал. Я пробовал перенаправление запроса типа с кодом 303, указывая
![]() ![]() |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: нет Всего: 24 |
Клиетну ничего сообщать не надо. Если на главной страничке index.html есть ссылка на картинку и если в браузере не отключен показ рисунков, клиент обязательно запросит картинку.
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Сириус, ты когда-нибудь видел в коде HTML локальнуе пути? Т.Е что-то типа того:
<IMG SRC="C:\My Pictures\Picture.jpg"> likehood, верно говорит, включи здравый смысл. Запрос твой сервер не принимает, потому что ты редиректишь клиента черти-куда, он(клиент) даже не пытается ни чего спрашивать у сервера, потому что просто игнорирует неправильный ответ.(не трогай location) Организуй анализ запроса клиента, при запросе типа GET / посылай ему свой текст HTML, при запросе типа GET /Picture.jpg посылай ему этот жипех файл в БИНАРНОМ виде. Не пробуй сразу использовать все возможности спецификации, двигайся постепенно, тогда все получится. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
GremlinProg, likehood, ptr спасибо и вам за то что отозвались,
Просто я уже по всякому пробую, сразу нападать не надо. Я с самого начала посылал ХТМЛ страницу на первый запрос GET, вот в таком виде
Я уже 100 раз говорил, а вы мне 100 раз предлагаете включить здравый смысл. Очень ценный совет.. На такой запрос в ответ не идет никакого запроса на картинку. Я пробовал по всякому..скажем так src="http://127.0.0.1/ist2_2229748_snowflakes.jpg" , вообще без разницы, не посылается запроса на картинку. Я думаю что скорее всего делаю какую-то грубую синтаксическую ошибку. Может быть не просто посылать html код надо, а в формате его отлкика (ну там типа первая строчка HTTP/1.1 200 (или 303 как я пробовал) OK\r\n и так далее по формату). Так тоже пробовал, но нет реакций. #define m "HTTP/1.1 200 OK\r\n Content-length:40\r\n Content-Type: image/jpeg; charset=windows-1251\r\n<img src='ist2_2229748_snowflakes.jpg'>\r\n" Тут наверное ошибка, как я понимаю, после этого отклика должен приходить запрос на картинку ist2_2229748_snowflakes.jpg..и размер Content-length точный. Вот.. strcpy(szSendBuff, m); |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Правильно понимаешь 1. Заголовки и контент должны разделяться двумя переводами строки \r\n\r\n (я вообще везде вместо \r\n использую только \n, так проще и структура пакута понятнее) Добавлено через 6 минут и 33 секунды 2. Может повторюсь, но картинка должна посылаться в бинарном виде!!! т.е. вместо <img src='ist2_2229748_snowflakes.jpg'> тут должно быть содержимое файла жипега (да да, именно содержимое, открываем файл, читаем его размер, выделяем буфер, читаем его в буфер, посылаем его содержимое) 3. Content-length, соответственно должен содержать размер файла, который ты посылаешь, а не длину строки <img src='ist2_2229748_snowflakes.jpg'>. Об этой строку вообще забудь, её не должно быть. ЗЫ: оказывается Ctrl-Enter тут сабмитит ответ, буду знать )) Добавлено через 11 минут и 9 секунд В принципе, первый пункт - это решение проблемы с ответом, но HTTP/1.1, это не то же самое, что HTTP/1.0, работают они по-разному, попробуй, по крайней мере на первое время, использовать HTTP/1.0. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Чтобы проверить работоспособность сервера посылаю небольшую утилитку "MegaHttpExtractor", здесь архив из 2-х частей, делал на делфи, поэтому размер почти 400 Кб. Все по-русски и одна кнопка-грабер, думаю разберешся.
"Адрес" можно вводить как числовой, так и доменный, "Порт" - пиши свой, "Запрос" по-умолчанию - стандартный "GET / HTTP/1.0" , тут так же можно экспериментировать "Отправляемые заголовки" - соответственно, список клиентских заголовков, если нужно, можешь добавлять, они будут встроены автоматически, синтаксис, как в стандарте: одна строка - один заголовок. "Приходящие заголовки" - соответственно, список всех заголовков, приходящих с сервера Ну, и "контент", куда ж без него. Довльно полезная утилитка при отладке стейт-машины на сервере CGI и/или Socket платформ, по крайней мемре на это она была изначально заточена. Посмотри как раскрываются готовые сервера, для примера яндекс стоит по-умолчанию. Если ответа нет несколько секунд, значит неправильно оформил пакет, пробуй иначе, тестируй... Присоединённый файл ( Кол-во скачиваний: 23 ) ![]() -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
ЗЫ: Уже не первый раз приходится резать образы, все таки ограничение сверху в 120к лучше расширить. Где вы видели паскалевские программы такого размера?
Присоединённый файл ( Кол-во скачиваний: 19 ) ![]() -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Извини GremlinProg , но я не совсем понял, ты говорил
"при запросе типа GET / посылай ему свой текст HTML, при запросе типа GET /Picture.jpg посылай ему этот жипех файл в БИНАРНОМ виде" Так вот если все по порядку, у меня нет запроса на картинку, я пытаюсь сделать так чтоб он был!!! Но его нет! ПРосто нет и все тут! Есть запрос на страничку, в ответ на который я должен ему как ты сказал, посылать текст HTML, вот я и слал текст HTML, ожидая что в ответ он уже пошлет мне запрос на картинку, которую я уже пошлю ему в бинарном виде. Так вот..текст html состоит у меня в теге <center> и <img src="..." > чем не HTML текст? Может мне сразу посылать ему картинку в виде бинарном? Но ведь вы все говорили, что сначала должен быть запрос на картинку..вообщем путаница вышла.. Это сообщение отредактировал(а) Сириус - 1.5.2007, 18:48 |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Сириус,
Тебя сложно понять, кто тебе сказал что браузер не посылает запрос на картинку? после того как ты вывел ему html текст? Может просто твоя программа и не ожидает второго запроса? или неправильно его обрабатывает? Код в студию где происходит Анализ запроса и формирование на него ответа. (тоесть там где от клиента к тебе приходит запрос, программа его анализирует и выдает либо текст html, либо картинку) Причем постарайся выложить весь код цикла обработки запросов... Добавлено через 4 минуты и 7 секунд Сириус, да кстати еще вижу ты путаешся в принципе работы HTTP Серверов.... Все что ты видишь в броузере - это все передается только программой-HTTP-сервером.... И HTML текст, и Java апплеты и картинки, и видио, и флеш... все передает программа.... Сами компьютеры тупые.... и они никому ничего не передают =) это делают программа.... Советую тебе сделать вывод на экран входящих запросов при каждой интерации цикла.... и вывод заголовка твоего ответа на это.... отлаживать будет легче.... Добавлено через 10 минут
Хочешь сразу картинку? запрос: http://127.0.0.1/Picture.jpg будет сразу картинка в броузере по такому запросу... но только если ты так запрограммируешь сво сервер! он должен понять что если ему пришел запрос /Picture.jpg то он должен проверить существование этого фаила и если он есть... прочитать его и отправить клиенту.... если нет то отправить 404 (ошибку) кстати программист волен делать что хочет, можно и по запросу http://127.0.0.1/Pig.alakazam.bum-bum Вывести клинту JPG картинку, все зависит от того как сервер обрабатывает запросы и что шлет в ответ клиенту... и HTML слать я тебе советую из фаила - проще будет разобраться, считывай фаил HTML из фаила и шли его.... А вообще если будет тебе не сложно то можно почитать исходные коды сервера Apache |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Сириус,
внимательно посматрел на твой код.... ты совершаешь большую ошибку в обработке запросов... а точнее обработки запросов вообще нет! Браузер может слать твоюему серверу все что угодно! хоть http://127.0.0.1/djafipsfshcjsdcjsld/ и твой сервер выдаст ему страницу html! потому что ты не проверяешь запрос! Неважно что пришло - отошлите ему ХТМЛ код.... Потом при втором запросе - та же каша... неважно что пришло во втором запросе, отошлите ему то-то.... сделай так.... каждый приход запроса - это одна интерация цикла! дальше как только он пришел - анализ запроса дальше - формирование ответа и собственно его отсылаем и закрываем соеденение с клиентом... пока ты не скажешь клиенту что все передано соедениение закрываем... клиент будет дальше ждать данных... а в броузере будет зависший прогресс бар загрузки страницы.... |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Kipter благодарю за ответ. Проблема вот в чем..я не получаю запроса на картинку! А должен получать.
Я после того как пошлю ответ на запрос клиента, то есть отклик сервера, который будет состоять из HTML кода, должен получить от клиента (в данном случае браузера IE) ответный запрос на уже картинку. Я ее не получаю. А не обрабатываю запросы, чтоб все проще было..пока что у меня главная проблема, представь что я хочу 5 картинок выставить на хтмл страничке, как мне это сделать? Я просто не знаю как это делается!...Вот главная проблема. Читал RFC http но там про это нет ничего. Спрашивал каких-то специалистов тоже, они говорили что после того как была послана хтмл страничка, браузер на все теги img src будет поочередно слать запросы, (где как мне тут уже обьяснили, я буду отправлять уже ответы в виде картинок в бинарном виде, НО ТОКО в случае когда на картинку шел запрос). Вот..надеюсь проблема понятна. Вот так все сложно. На самом деле вопрос не такой уж и легкий..а если я ему адрес кину типа 127.0.0.1/image.gif то он покажет, (то есть найдет на моем компе в текущей директории программы картинку image.gif и покажет ) Но это токо в случае локальном..а если из другого компа подключаться? То это погорит. Не важно, просто моя главная проблема в том что не знаю что слать клиенту и как слать клиенту, чтоб он мне ответный запрос на картинку выслал. Я должен этими запросами-откликами построить ХТМЛ страничку целую. Весь этот процесс..но мой клиент посылает токо один запрос обычный..(когда набираю http://127.0.0.1/ ) запрос на GET / - я теоретически должен ему слать страничку ХТМЛ и он уже должен колдовать мне запросы на картинки..по очереди, а я по очереди буду слать ему их в бинарном виде. Если ХТМЛ страничка состоит из картинок токо. Вот, но я пробовал слать и ХТМЛ код и все все..но не добиваюсь ответа следующего от клиента(уже на конкретный файл (в данном случае картинку) ).... :( |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Сириус, проверь в дополнительных настройках браузера, стоит ли галочка "отображать рисунки". На ум приходит только это объяснение.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
http://127.0.0.1/Picture.jpg
спасибо за ссылку отловил одну ошибку ![]() GremlinProg, пришел к такому выводу на втором сообщении в этой теме ![]() Это сообщение отредактировал(а) Vaulter - 3.5.2007, 21:35 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Vaulter, ну может сейчас проверит )
ужас, в этой теме слишком много слов, наверное, все таки стоит делить большие монологи на абзацы, а то складывается впечатление, что у авторов такое же настроение, как и их сообщения: длинные и монотонные... -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Это не проще... это наоборот сложнее выходит =) Во первых при обработке можно легко понять а приходит что то или нет.. с выводом всего этого на экран Во вторых а понадобится тебе 6 картинок... или еще и CSS таблицу подгрузить... и что перелапачивать код и поочередность принятия или отдачи пакетов? В третьих, броузер может скешировать 1 картинку так как он ее знает и запросит сразу вторую на что получит совершенно не ту =) Сделай всетаки обработчик запросов. Видимо всетаки броузер грузит эту картинку не с твоего серверного приложения, а грузит ее по локальному пути... твоего компьютера... Покажи код где твое серверное приложение отправляет картинку.... |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
GremlinProg проверил, в настройках все ок. (Отображение картинки есть)
Vaulter какую ошибку отловил? Kipter вот
Вот тут я отправил две картинки (через пути локальные) и они нормально отображаются на страничке (но этот вариант, как все уже говорили, не будет работать если с другого компа подключаться на мой сервер), а 3-ую по ссылке 'http://127.0.0.1/links.jpg' и она не отображается (на страничке токо крестик, как бывает когда картинка не грузится) . Картинка links у меня в директории debug-а, так что все правильно..я думаю тут я должен был получить запрос на картинку, после чего я должен был послать ее в бинарном виде, но ее(запроса на картинку) нет. В коде я ставил recv, (сейчас их убрал кроме первой) никаких запросов не приходило. Короче первые две картинки показывает, но метод не тот, а 3-ю не показывает вообще. "Во первых при обработке можно легко понять а приходит что то или нет.. с выводом всего этого на экран Во вторых а понадобится тебе 6 картинок... или еще и CSS таблицу подгрузить... и что перелапачивать код и поочередность принятия или отдачи пакетов? В третьих, броузер может скешировать 1 картинку так как он ее знает и запросит сразу вторую на что получит совершенно не ту =)" Ты совершенно прав, это я понимаю.. надо запросы обрабатывать, но пока я их через debug отлавливаю и могу так проверять..мне токо понять как этот диалог между сервером и клиентом правильно вести, чтобы отобразить всю страничку, а дальше я к нормальному виду все приведу. Пока что у меня всего один жалкий запрос...мне нужно самое главное понять, механизм работы, а так остальное уже не такая проблема. Это сообщение отредактировал(а) Сириус - 4.5.2007, 09:58 |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Господа, я смог сделать так чтоб пришел запрос на картинку! НО это похожа на очень сложную загадку (хотя решение ее будет думаю после того как его обьявят казаться весьма простым, как обычно). Вот как:
Ну вот вам и загадка непростая..(непростая раз уж никто не додумался) В чем смысл? Почему именно два раза нужно делать ret= send(sock, szSendBuff,strlen(szSendBuff),0); ret= send(sock, szSendBuff,strlen(szSendBuff),0); ? а не один раз...почему??? Давайте рассуждать, проблема думаю интересная. Причем еще один тонкий момент..если я перезагружу сервер (заново запущу) и на страничку кликну просто рефреш, то опять запроса на картинку не будет..надо заново открыть новую страничку и там написать адрес http://127.0.0.1 Но это еще так..не важно, не настоко важно как момент с двумя sendАМи!..Короче что вы об этом думаете? Это все сложнее чем я думал, а материалов подробный нет..в RFC по http ничего не говорится про надобность посылок двух запросов, вообще про сам механизм там весьма поверхностно, изучать исходники Apache ужасно сложно..единственный сайт который я нашел по инофрмации о серверах - это http://apachedev.ru/2006/03/05/the-apache-...glava-4-chast-1 , но если вы знаете какие-нибудь другие сайты которые могут быть мне полезны, то прошу киньте ссылки..(или сайты где есть примеры серверов, не таких огромных как Apache, чтоб можно было изучить быстрее..исходники серверов) и т.п. Это сообщение отредактировал(а) Сириус - 5.5.2007, 22:32 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Бред какой-то
![]() Почему не приходит запрос на картинку? В коде есть ссылка на нее. Клиент ведь должен ее попросить!!! Спустя два года ![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Обо всем по порядку.
Для начала , разбираться в тупую - долгое дело. Самое простое - поставить apache, сделать тот же сайт с картинкой и html и разбирать любым http сниффером. Теперь о деле: Клиент запрашивает страницу: "GET / ......." Тут сервер должен понять что запрашивают именно "/" , т.е. рут сайта. Сервер соответственно выдает клиенту(браузеру):
У клиента соответственно грузится страничка иии... , надо ведь картинку загрузить! Клиент делаеть запрос: "GET /ababa.jpg ......." Сервер понимает что надо выдать картинку(но выдать может что хочешь) и выдает: "Content-type: image/jpeg ..... содержимое". Но по факту , заголовки можно вообще не выдавать(забить на стандарты, чтобы лишний код не писать) , а выдавать сразу же бинарное содержимое файла. В итоге самый легкий план для обучения таков: Сервер: ожидание соединения Клиент: подключение , шлем get ... Сервер: принимаем данные , парсим запрос Если запрос "/" тогда выдаем "<html><img src = "ababa.jpg"></html>"(сбрасываем соединение) , гоу ту пункт 1 Если запрос "/ababa.jpg" Считываем любым путем нужный файл(по факту это может быть и не jpg)
Добавлено @ 05:18 Вот код из моего давнего проекта, что то типа веб-интерфейса к проге. Получала аргументы простые через GET, сложные через POST
data , rcv - особые командные буфферы , но смысл понятен. После этого в data - результат парсинга POST или в rcv - результат парсинга GET data_type - тип запроса; Далее соответственно проверка , что же за команды нам пришли и соответственно выдача того что надо. Можно выдать прямо сразу бинарными данными jpg - фаерфокс прекрасно понимал))) Добавлено через 14 минут и 25 секунд
Вот ты некромант , я ведь не посмотрел даж на дату !) Писал мучался... ну ладно может кто через поиск найдет. Это сообщение отредактировал(а) REZiaMIX - 5.7.2009, 05:19 -------------------- ![]() |
||||||||
|
|||||||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
TheDestroyer |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Скорее всего потому, что клиент - браузер IE. А он постоянно все кэширует. Надо тестить либо в ФФ, где нет кэширования такого, либо слать браузеру типа:
В свое время намучался с непонятным отсутствием запроса к веб серверу. |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
Fiddler возьмите и смотрите что делает IE -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |