
13.02.2010, 14:51
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
С нами:
8899527
Репутация:
2
|
|
ClientSocket http
посылаю вот так
void __fastcall TForm2::Button3Click(TObject *Sender)
{
UnicodeString httpheader,httpheader1,httpheader2,httpheader3,htt pheader4;
httpheader1="GET / HTTP/1.0 \r\nAccept: */* \r\n";
httpheader2="Connection: Keep-alive \r\n";
httpheader3="Host: rustorrents.org \r\n";
httpheader4="User-Agent: MyAgent \r\n\r\n";
httpheader= httpheader1+httpheader2+httpheader3+httpheader4;
ClientSocket1->Socket->SendText(httpheader);
Memo1->Lines->Add(httpheader);
}
принимаю вот так
void __fastcall TForm2::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket)
{
UnicodeString answer ;
Memo1->Lines->Add("Получаем данные");
answer=ClientSocket1->Socket->ReceiveText();
Memo1->Lines->Add(answer) ;
}
компилятор с++ builder 2009
в мемо получаю китайские эроглифы
почему?
Последний раз редактировалось RunDMX; 13.02.2010 в 15:21..
|
|
|

13.02.2010, 15:30
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами:
10943066
Репутация:
1236
|
|
вот поэтому и не люблю я rad среды) порой они просто рогами в воздух упираются)
__________________
 
snow white world wide
|
|
|

14.02.2010, 13:11
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
С нами:
8899527
Репутация:
2
|
|
Подниму наверно тему так как перерыл весь инет и решения не нашел
Данные приходят частично
|
|
|

14.02.2010, 13:53
|
|
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами:
9851426
Репутация:
1676
|
|
У меня всё целиком приходит
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Socket->SendText("GET / HTTP/1.1\r\nHost: rustorrents.org\r\n\r\n");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(ClientSocket1->Socket->ReceiveText());
}
|
|
|

14.02.2010, 14:38
|
|
Новичок
Регистрация: 17.01.2010
Сообщений: 23
С нами:
8586507
Репутация:
0
|
|
а как ты хотел? чтобы всегда сразу все приходило? такого не будет
вызывай еще раз ReceiveBuf(Buf,iBufSize)
(да и еще, больше iBufSize, за раз не примешь)
Да и еще момент, разве запросы/ответы в unicode передаются? Может я просто не знаю..
Последний раз редактировалось Protorus; 14.02.2010 в 14:46..
|
|
|

14.02.2010, 20:35
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
С нами:
8899527
Репутация:
2
|
|
Сообщение от Protorus
а как ты хотел? чтобы всегда сразу все приходило? такого не будет
вызывай еще раз ReceiveBuf(Buf,iBufSize)
(да и еще, больше iBufSize, за раз не примешь)
Да и еще момент, разве запросы/ответы в unicode передаются? Может я просто не знаю..
Так разве ClientSocket1Read не должен вызываться несколько раз ?
поставил вот так:
int iBufSize = Socket->ReceiveLength();
while(iBufSize>0){
char *Buf = new char [iBufSize + 1];
Socket->ReceiveBuf(Buf,iBufSize);
AnsiString Rtext=Buf;
//Memo1->Lines->Add(UTF8Decode(Rtext));
Application->ProcessMessages();
Memo1->Lines->Add(Rtext); }
iBufSize=0;
тоже самое не до конца.
Последний раз редактировалось RunDMX; 14.02.2010 в 20:45..
|
|
|

15.02.2010, 03:23
|
|
Познающий
Регистрация: 25.10.2009
Сообщений: 97
С нами:
8707843
Репутация:
15
|
|
RunDMX, нет под рукой билдера...какой выбран режим блокируемые или не блокируемые сокеты?
Так разве ClientSocket1Read не должен вызываться несколько раз ?
Само собой.
Возможно неверные заголовки и сервер раньше времени разрывает соединение
|
|
|

15.02.2010, 04:20
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
С нами:
8899527
Репутация:
2
|
|
ctNonBlocking
ответ от сервера
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Mon, 15 Feb 2010 00:18:56 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.6-1+lenny4
Vary: Accept-Encoding
дальше идет Html и обрываеться гдето в середине и дальше отключение происходит
как видно на 2 скрине
|
|
|

15.02.2010, 13:23
|
|
Новичок
Регистрация: 17.01.2010
Сообщений: 23
С нами:
8586507
Репутация:
0
|
|
дальше идет Html и обрываеться гдето в середине и дальше отключение происходит
Даже если сервер закрывает соединение после отправки данных, все они будут находится в системном буфере на твоей машине. Твоя задача правильно и полностью их отуда достать в свой буфер.
|
|
|

15.02.2010, 14:53
|
|
Познающий
Регистрация: 25.10.2009
Сообщений: 97
С нами:
8707843
Репутация:
15
|
|
RunDMX, в таком случае я бы посоветовал использовать блокируемые сокеты и в отдельном потоке загружать данные. А вообще если используешь такой уровень(сокета, а уже не готовый HTTP компонент), то я бы взял бы более низкие движки, могу скинуть свой, но на делфи и придётся портировать или если есть знание API сокетов то написать самому, для твоей задачи на чистом API можно написать всё одной процедурой и она будет строк в 80(если не нужно автомат. редиректы, обработки HTTP ошибок и т.д.)
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Живые прокси
|
xdx |
Skype, IRC, ICQ, Jabber и другие IM |
111 |
15.04.2007 13:10 |
|
Proxy
|
Kozak-Scv |
Анонимность |
2 |
11.02.2007 17:28 |
|
Технология HTTP Fingerprint
|
gemaglabin |
Уязвимости |
5 |
28.09.2006 00:01 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|