Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Вниз

TClientSocket - Browser   Найти похожие ветки 

 
LLOyD   (2003-08-16 03:03) [0]

Здравствуйте Delphi-кодеры !!!

Создаю клиент-сокет:
Имя хоста что-то типа: www.ya.ru
Номер порта: 80 (HTTP)
ClientSocket1.Open; - все работает.
Внимание ВОПРОС:
Че мне теперь делать? Сервер молчит =(.
Жду ответа так:

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var Buffer : array [0..65535] of byte; {Вроде бы HTTP-пакет
не более 4096 байт?}
begin
...
Size := ClientSocket1.Socket.ReceiveLength;
ClientSocket1.Socket.ReceiveBuf( Buffer, Size );
...
end;

Разве при коннекте сервер не должен хоть как-нибудь
уведомить клиента, что коннект состоялся или что-вроде того?

Пробовал запросы посылать:
POST http://www.ya.ru/ HTTP/1.0
Connection: Keep-Alive
Host: www.ya.ru и т.д. и т.п.

Все равно молчит. Написал подобное во Flash"е.
Такая же история. Подскажите как заставить сервер
хоть байт мне переслать, уж очень хочется браузер написать
именно используя TClientSocket.


 
SergP   (2003-08-16 04:05) [1]


> Разве при коннекте сервер не должен хоть как-нибудь
> уведомить клиента, что коннект состоялся или что-вроде того?
>
> Пробовал запросы посылать:
> POST http://www.ya.ru/ HTTP/1.0
> Connection: Keep-Alive
> Host: www.ya.ru и т.д. и т.п.


А как ты посылаешь запросы если не коннект не произошел?
OnConnect у тебя срабатывает или нет?


 
LLOyD   (2003-08-16 04:22) [2]

2SergP

В том то и вопрос: OnConnect сработал нормально.
OnRead не вызывается НИ РАЗУ !


 
nikkie   (2003-08-16 13:42) [3]

>Пробовал запросы посылать:
добавь в конце лишний перевод строки


 
Verg   (2003-08-17 11:31) [4]


> Разве при коннекте сервер не должен хоть как-нибудь
> уведомить клиента, что коннект состоялся или что-вроде того?


Нет не должен.

http - это такой протокол, что клиент сам должен начать "разговор". В отличии от, например, smtp или pop3.

Начни с простого, с запроса GET.
Потренируйся telnet-ом.


 
Verg   (2003-08-17 11:36) [5]

Кстати,
> nikkie ©
прав. Если ты читал про http, то должен знать что любой запрос состоит из двух частей: заголовок(header) и содержимое (content). Эти две части разделяются пустой строкой.


 
Beginer1   (2003-08-17 21:31) [6]

а можно премер как можно при помоши этого загрузить страницу
в виде html


 
LLOyD   (2003-08-18 02:58) [7]

2verg

> Потренируйся telnet-ом

Как с ним работать ? Open - выдает всегда что не
может соединиться, напиши если не трудно пример
коннекта telnet-ом.


> Начни с простого, с запроса GET

И его пробовал - не получается. И еще: сразу после коннекта
вызывается onWrite.


 
LLOyD   (2003-08-18 05:25) [8]

Получилось !!! Только почему после первого
запроса-ответа связь прерывается ? Это что
спецификация HTTP ?


 
LLOyD   (2003-08-18 06:34) [9]

2LLOyD
Connection: Keep Alive
Пить надо меньше !!!


 
Beginer1   (2003-08-18 08:25) [10]

>Получилось !!! Только почему после первого
>запроса-ответа связь прерывается ? Это что
>спецификация HTTP ?

http://www.itunion.ru/doc/?/net/http/http

после запроса GET по спецификации HTTP нужно передавоть пустую строку примерно так

попробуй вот так

procedure TForm1.Button1Click(Sender: TObject);
begin
{


 
Beginer1   (2003-08-18 08:26) [11]

>Получилось !!! Только почему после первого
>запроса-ответа связь прерывается ? Это что
>спецификация HTTP ?

http://www.itunion.ru/doc/?/net/http/http

после запроса GET по спецификации HTTP нужно передавоть пустую строку примерно так

попробуй вот так

procedure TForm1.Button1Click(Sender: TObject);
begin
{


 
Beginer1   (2003-08-18 08:27) [12]

>Получилось !!! Только почему после первого
>запроса-ответа связь прерывается ? Это что
>спецификация HTTP ?

http://www.itunion.ru/doc/?/net/http/http

после запроса GET по спецификации HTTP нужно передавоть пустую строку

(chr(10)+chr(13))


 
Digitman   (2003-08-18 09:08) [13]


> И еще: сразу после коннекта
> вызывается onWrite.


Что ж странного в этом ? Так и должно быть !
Для асинхр.режима только факт возникновения события OnWrite() дает "зеленый свет" вызову любых методов передачи данных. И не иначе.


 
nikkie   (2003-08-18 15:19) [14]

>Это что спецификация HTTP ?
да


 
SergP   (2003-08-18 18:21) [15]


> Beginer1 © (18.08.03 08:27) [12]
> >Получилось !!! Только почему после первого
> >запроса-ответа связь прерывается ? Это что
> >спецификация HTTP ?


Вроде бы не всегда... Где-то читал что это зависит от того HTTP1.0 или HTTP1.1


 
LLOyD   (2003-08-18 18:50) [16]

2SergP
Я тоже читал примерно следующее
HTTP/1.0 связь после <запрос-ответ> по-умолчанию прерывается
если в заголовке запроса клиента не содержится строка
Connection: Keep-Alive
но она у меня почему-то не работает...
HTTP/1.1 в принципе не должен прерывать связь

2Beginer1 & 2All
Мои основные ошибки:
1. Даже если метод GET, HEAD и т.п. все равно должна присутствовать пустая строка после заголовка.
2. Поля заголовка отделяются не CRLF - #13#10,
а просто #10 (Unix-система?).



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
1-40414
ilka
2003-09-30 17:49
2003.10.13
Сервисы


6-40551
SM
2003-08-07 15:33
2003.10.13
Как избавиться от сообщения об ошибке при попытке коннекта сокета


1-40490
Tornado
2003-10-02 11:41
2003.10.13
Дилетанский вопрос по функциям


14-40604
Прохожий
2003-09-24 12:59
2003.10.13
Проблема с деструктором потока


1-40420
Agent[007]
2003-09-30 17:20
2003.10.13
xxx in xxx.pas ;





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский