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

Вниз

idtcpclient. Ответ от сервера запихнуть в стрим.   Найти похожие ветки 

 
Pasha L ©   (2007-02-04 01:44) [0]

Здравствуйте. Проблема с readstream idtcpclient"а. Она проста: на readstream программа повисает. Хотя ответ от сервера есть (проверил с помощю снифера). Попробовал по-другому:
i:=idtcpclient1.ReadFromStack;
idtcpclient1.Disconnect;
str:=tmemorystream.Create;
copymemory(idtcpclient1.InputBuffer.Memory,str.Memory,i);

Может быть, возможно и так, но на последней строчке, почему-то, вылезает access violation...
Помогите скопировать содержание ответа сервера в стрим.


 
DiamondShark ©   (2007-02-04 09:01) [1]


> str:=tmemorystream.Create;
> copymemory(idtcpclient1.InputBuffer.Memory,str.Memory,i);
>
> Может быть, возможно и так, но на последней строчке, почему-
> то, вылезает access violation...

Правильно вылезает.
Отладчик значение str.Memory какое показывает?
А значение str.Size?


 
Pasha L ©   (2007-02-04 12:21) [2]

сделал так:
 i:=idtcpclient1.ReadFromStack;
 idtcpclient1.Disconnect;
 str:=tmemorystream.Create;
 str.Size:=i;
 copymemory(idtcpclient1.InputBuffer.Memory,str.Memory,i);
 str.Position:=0;


Затем ищу последовательность знаков #13#10#13#10 - после неё, как я понимаю, следует начать чтение содержимого (так как обмен данными происходит по протоколу http).
Делаю:
 repeat
   str.Read(s2,4);
 until s2=#13#10#13#10;


но на последней строчке вылезает ошибка. Почему?


 
Anatoly Podgoretsky ©   (2007-02-04 12:23) [3]

> Pasha L  (04.02.2007 12:21:02)  [2]

> Почему?

Потому что ошибка.


 
Pasha L ©   (2007-02-04 12:29) [4]

Где именно


 
Anatoly Podgoretsky ©   (2007-02-04 12:31) [5]

> Pasha L  (04.02.2007 12:29:04)  [4]

Не скажу, ты нам не говоришь, а мы тебе.


 
Pasha L ©   (2007-02-04 12:46) [6]

Что я не говорю?
GET /impro.php?impro_id=acbf28c876508d19ee9859a819ae94db HTTP/1.1
Host: chat.salut.md
Accept-charset: windows-1251
Accept: text/html, */*
Connection: keep-alive

Это запрос, а вот ответ:
HTTP/1.1 200 OK
Date: Sun, 04 Feb 2007 09:38:25 GMT
Server: Apache/1.3.34 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP-CGI/0.1b
X-Powered-By: PHP/5.1.6
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/png

d7
‰PNG
.
...
IHDR...P...!.....tЎѕЉ....PLTEьзЩ^3f0./–...ЊIDAT.•c`... „.....SЃЃ .УЃЃ.?і.Њp3.БК‰`тяЂ3.ШбМ.†..µ
.¦.‚Й‚`2!&#152;ЊМ.$*ц@&#152;l.,О<ѓ:lFeЫaЁ"
n°Г&#152;.gр¦Cэ^,!i
eZя1b†2-$’њ!L1.‰#i.¦р.Й6.¦..0,ЎL&`.20.....й±™„Ч....IEND®B`‚
0


Я, как я понимаю, считал ответ в стрим. Далее хочу добраться до строчки d7 и с нее начать дальнейшее чтение (чтение png). Перед d7 идет последовательность #13#10#13#10. Вот я её и ищу.


 
Anatoly Podgoretsky ©   (2007-02-04 12:52) [7]

> Pasha L  (04.02.2007 12:46:06)  [6]

Ты говоришь - есть ошибка, тебе оответсвенно в ответ - есть.
Ты за все это время так и не научися задавать вопросы.
Не ожидай, что тебя кто то будет допрашивать, это твоя задача.
Не хочешь говорить, не говори, но тогда жди телепатов.
Но к тому времени огда ты решишься открыть рот, желание отвечать уже пропадет.


 
Pasha L ©   (2007-02-04 13:10) [8]

что не понятно из [2] ?
Ты знаешь привила постоения http, тебе должно быть понятно, почему именно #13#10#13#10. Ошибка вылезает при сравнении s2 с этой строкой. Ответ от сервера точно есть. Что не понятно...


 
Anatoly Podgoretsky ©   (2007-02-04 13:26) [9]

> Pasha L  (04.02.2007 13:10:08)  [8]

Ошибка вылезает, ну так устрани ошибку или к телепатам.


 
Pasha L ©   (2007-02-04 14:50) [10]

Да блин. Не хочешь помогать - не надо.


 
Anatoly Podgoretsky ©   (2007-02-04 16:04) [11]

Все виноваты, только я любимый лучше всех, такой умный, такой красивый. Жалко что никто об этом не догадывается.


 
DiamondShark ©   (2007-02-06 14:37) [12]


> Делаю:
>  repeat
>    str.Read(s2,4);
>  until s2=#13#10#13#10;
>
> но на последней строчке вылезает ошибка. Почему?

Потому что бред написан.

С чего ты решил, что ТАК из стрима читаются строки?
Ты читал декларацию метода Read?
Что, по-твоему, окажется в строковой переменной после оператора str.Read(s2,4);?
Как ты думаешь, что происходит при обращении к такой "строке"?

С чего ты решил, что контент начнётся непременно с позиции, кратной четырём?
Вот даже в твоём примере заголовки ответа занимают 295 байт. Как, по-твоему, завершится цикл чтения по 4 байта из потока длинной в 295 байт?



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

Текущий архив: 2007.03.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.073 c
3-1165501071
alsov
2006-12-07 17:17
2007.03.04
Какая функция отработает быстрее


15-1170508476
TUser
2007-02-03 16:14
2007.03.04
Тест, неожиданно оказавшийся сложным


15-1171050265
@!!ex
2007-02-09 22:44
2007.03.04
Модем отказываеться подключать к инету.


4-1161311947
Antoxa2005
2006-10-20 06:39
2007.03.04
Подскажите, как отловить подключение по локальной сети и если...


3-1165395659
DmitrichJ
2006-12-06 12:00
2007.03.04
Клиент-Сервер. InterBase. Почему не работает через сеть?