Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
1-40487
dim-
2003-10-02 12:52
2003.10.13
как узнать что форма была закрыта


14-40614
k-man
2003-09-24 20:41
2003.10.13
WinApi


1-40465
lars
2003-10-02 15:51
2003.10.13
QReports !!


1-40414
ilka
2003-09-30 17:49
2003.10.13
Сервисы


1-40464
ded_mazai
2003-10-02 16:22
2003.10.13
TTreeView