Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 18:24   #1
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
Восклицание межсетевой экран http

Подскажите как правильно написать "ответ" сервера. Суть: есть серверное приложение (использую TServerSocket, Delphi). В браузере на другом компе ввожу в настройках "использование прокси-сервера", ввожу айпи и порт моего серверного приложения. Запросы от браузера я получаю, но вот как ответить что я мол разрешаю ему отображать страницу не знаю как((((

написала с сервера строчку для браузера "НТТР/1.0 200 OK"..но ничего не отобразилось, что не так? или этого мало?((

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:=3128;
ServerSocket1.Open;
caption:='server open';
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var s:string;
  i:integer;
begin
s:=Socket.ReceiveText;
RichEdit1.Lines.Add(s);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
if ServerSocket1.Socket.Connections[i].RemoteAddress=Socket.RemoteAddress
then ServerSocket1.Socket.Connections[i].SendText('HTTP/1.0 200 OK'+#$0D+#$0A);
end;

Последний раз редактировалось amico; 17.12.2012 в 19:27.
amico вне форума Ответить с цитированием
Старый 17.12.2012, 19:35   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Код:
// контент-
 Socket.SendText('HTTP/1.0 200 OK'+#$0D+#$0A);
 Socket.SendText('Server: USB-TERM'+#$0A);
 Socket.SendText(#$0D+#$0A);

 //формирование-
 Socket.SendText('<html>Я cтраница</html>');
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.12.2012, 19:59   #3
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Код:
// контент-
 Socket.SendText('HTTP/1.0 200 OK'+#$0D+#$0A);
 Socket.SendText('Server: USB-TERM'+#$0A);
 Socket.SendText(#$0D+#$0A);

 //формирование-
 Socket.SendText('<html>Я cтраница</html>');
Я столкнулась с этой темой впервые.....
вот что я получаю от браузера:
Код:
GET http://www.yandex.ru/favicon.ico HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; MRA 6.0 (build 5754); ru) Presto/2.10.289 Version/12.02
Host: www.yandex.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
...браузер висит...страницу не отображает на данный момент...
КАК мне ему на его запрос об открытии "Host: www.yandex.ru"...разрешить само отображение этой страницы????

То, что с вашей подсказки выдало такое, но это не то что я хотела((
amico вне форума Ответить с цитированием
Старый 17.12.2012, 20:02   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

не разрешить, а обеспечить!
прокси должен сам подключиться к указанному серверу, выкачать контент и отдать его клиенту
это не тупо 200 ОК
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 17.12.2012, 20:06   #5
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
не разрешить, а обеспечить!
прокси должен сам подключиться к указанному серверу, выкачать контент и отдать его клиенту
это не тупо 200 ОК
Ну так скажите КАК не ТУПО сделать!!! Я написала три строчки и сижу любуюсь, не знаю куда дальше шагать. Знала бы - не спрашивала!

На просторах Интернета нашла такой "алгоритм" о структуре ответа сервера:
Цитата:
Ответ сервера. Сервер в ответ выдает HTTP ответ + дополнительные данные + запрошенную инфомацию (если требуется). Ответ сервера всегда состоит из строки с версией протокола HTTP, пробела, трехзначного кода статуса, за которым через пробел может следовать его расшифровка. После этого передается CRLF (символов с кодами 0Dh, 0Ah), затем идет необязательная информационная часть в формате параметр=значение и наконец завершается ответ еще одной парой символов CRLF. Затем следует запрошенная информация (если ее передача возможна и требуется в данном контексте). Пример ответа - "НТТР/1.0 200 OK". 4. Сервер разрывает соединение с клиентом, что служит сигналом к завершению обмена Клиент тоже может прервать обмен на любой стадии, разорвав соединение с сервером. Особенно это любит делать IE. Он выдает запрос, получает ответ и начинает получать данные, а тем временем анализируя полученный ответ выясняет, что запрошенный ресурс уже есть в кеше и его не требуется загружать. При этом IE разрывает соединение и прерывает загрузку. Аналогично он ведет себя при нажатии кнопки "Стоп". Поэтому при начальном тестировании я бы рекомендовал использовать программу Net Vampire, которая отображает подробный протокол обмена с сервером (что и когда передано на сервер и что принято в ответ).
На этом и основывалась ...что дальше? Как это "выкачать контент" и "отдать клиенту"?
amico вне форума Ответить с цитированием
Старый 17.12.2012, 20:12   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

вы должны сделать свой запрос к тому что просит браузер и отдать ему эти данные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.12.2012, 20:16   #7
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Ну так КААААААААК "свой запрос" выглядеть должен??? какова структура его хоть? я ничего толком об этом инфы найти не могу...
я ведь не могу послать такое
ServerSocket1.Socket.Connections[i].SendText('отобрази пожалуйста Яндекс мне';
amico вне форума Ответить с цитированием
Старый 17.12.2012, 20:17   #8
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Ну так КААААААААК "свой запрос" выглядеть должен??? какова структура его хоть? я ничего толком об этом инфы найти не могу...
я ведь не могу послать такое
ServerSocket1.Socket.Connections[i].SendText('отобрази пожалуйста Яндекс мне';
amico вне форума Ответить с цитированием
Старый 17.12.2012, 20:28   #9
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
КААААААААК "свой запрос" выглядеть должен???
Что за школотная привычка кричать ?

"свой запрос" должен выглядеть так же как "не свой" - по всем правилам протокола HTTP.
И к "межсетевому экрану" это отношения вообще не имеет - это задача проксирования, т.е. реализации посреднических функций (proxy англ. = посредник) неким программным элементом.
xoodoo вне форума Ответить с цитированием
Старый 17.12.2012, 20:33   #10
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Что за школотная привычка кричать ?

"свой запрос" должен выглядеть так же как "не свой" - по всем правилам протокола HTTP.
И к "межсетевому экрану" это отношения вообще не имеет - это задача проксирования, т.е. реализации посреднических функций (proxy англ. = посредник) неким программным элементом.
И причем тут кричать? По-моему я вас не оскорбляла...Если бы вы были внимательнее, то вам бы врезалось N-е количество раз написанное "как". кто бы толковыми примерами помог, а не нравоучениями!

"И к "межсетевому экрану" это отношения вообще не имеет " ...не я придумывала тему лабораторки...Как узнала - так и говорю
amico вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
http server,http сервер, проблемы с post реализация на java snajper_ro Общие вопросы по Java, Java SE, Kotlin 1 23.10.2011 14:25
Http Proxy - как написать к браузеру http-прокси? SergeiGuk Общие вопросы .NET 0 21.05.2010 17:37
Межсетевой экран. Bilargo Операционные системы общие вопросы 1 30.12.2009 23:44