Форум: "Сети";
Текущий архив: 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