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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.044 c
15-1171147673
homm
2007-02-11 01:47
2007.03.04
SATA и иконка в трее


2-1171391195
Lamer_5
2007-02-13 21:26
2007.03.04
Как считать значения ListView


2-1170691512
The X
2007-02-05 19:05
2007.03.04
Каракули вместо кириллицы на MessageDlg в XP SP1


15-1171278311
nameless
2007-02-12 14:05
2007.03.04
Изменение сортировки


2-1171138018
ANTPro
2007-02-10 23:06
2007.03.04
Сменить фон в ЕditBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский