ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

13.02.2010, 14:51
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
Провел на форуме: 183294
Репутация:
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:23
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от RunDMX
поправил в первом посте там видно
Попробуй сделать прием как тут:
cyberforum.ru/cpp-builder/thread31583.html
должно получится, вообще погугли на эту тему
|
|
|

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

13.02.2010, 15:34
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
Провел на форуме: 183294
Репутация:
2
|
|
поменял на
void __fastcall TForm2::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket)
{
int iBufSize = Socket->ReceiveLength();
char *Buf = new char [iBufSize + 1];
Socket->ReceiveBuf(Buf,iBufSize);
AnsiString Rtext=Buf;
Memo1->Lines->Add(UTF8Decode(Rtext));
}
теперь не доконца получает
пример запрос на яндекс

|
|
|

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

14.02.2010, 13:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
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
Провел на форуме: 118852
Репутация:
0
|
|
а как ты хотел? чтобы всегда сразу все приходило? такого не будет
вызывай еще раз ReceiveBuf(Buf,iBufSize)
(да и еще, больше iBufSize, за раз не примешь)
Да и еще момент, разве запросы/ответы в unicode передаются? Может я просто не знаю..
Последний раз редактировалось Protorus; 14.02.2010 в 14:46..
|
|
|

14.02.2010, 20:35
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
Провел на форуме: 183294
Репутация:
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
Провел на форуме: 604635
Репутация:
15
|
|
RunDMX, нет под рукой билдера...какой выбран режим блокируемые или не блокируемые сокеты?
Так разве ClientSocket1Read не должен вызываться несколько раз ?
Само собой.
Возможно неверные заголовки и сервер раньше времени разрывает соединение
|
|
|

15.02.2010, 04:20
|
|
Новичок
Регистрация: 14.06.2009
Сообщений: 27
Провел на форуме: 183294
Репутация:
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 скрине
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|