Форум: "Прочее";
Текущий архив: 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!˜ЊМ.$*ц@˜l.,О<ѓ:lFeЫaЁ"
n°Г˜.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