Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ошибка


Res ©   (2008-04-16 15:45:00) 

Здравствуйте! Помогите пожалуйста найти ошибку в коде.
function getpage(url,url2:string):string;
var
D:WSAData;
S:TSocket;
A:TSockAddr;
request,response:string;
begin
 if(WSAStartup($101,D)0) then
 begin
   result:='';
   exit;
 end;
 A.sin_family:=AF_INET;
 a.sin_port := htons( 80 ); // ïîðò ñåðâåðà
 A.sin_addr.s_addr := inet_addr(PcHar(url));
 S:=socket(AF_INET,SOCK_STREAM,0);
 request:='GET '+url+' HTTP/1.1'+#13#10+'Host: '+url2+#13#10+'Connection: Close'+#13#10#13#10;
 if(connect(S,A,sizeof(A))0) then
 begin
 showmessage('closed');
 end;
 send( s, request,length(request),0);
 recv( s, response, sizeof(s), 0 );
 result:=response;
end;


Dennis I. Komarov   (2008-04-16 16:27:00) [1]

> [8] Anatoly Podgoretsky ©   (16.04.08 16:09)

Не, тут уже ищут ошибки "тараканов в голове" :)


Сергей М.   (2008-04-16 16:22:00) [2]


> что я делаю не так


Ты не понимаешь разницы между дельфийскими длинными строками и статическими массивами.


> Можно ли вместе IP указывать хост?


Где ты его хочешь указывать ?


Res   (2008-04-16 16:18:00) [3]

вместо*


Res   (2008-04-16 16:16:00) [4]

Может перестанете флуд разводить ;) и подскажите что я делаю не так.
И еще вопрос
Можно ли вместе IP указывать хост?


Сергей М.   (2008-04-16 16:09:00) [5]


> Res   (16.04.08 16:01) [5]


Граблей тут навалом разных)

Начнем с самых легких - строки какого конкретно содержимого ты намериваешься передавать параметром url в свою функцию ?


Anatoly Podgoretsky   (2008-04-16 16:09:00) [6]

> Dennis I. Komarov  (16.04.2008 15:46:01)  [1]

Ты не прав, ошибки в коде ищут форумы.


Dennis I. Komarov   (2008-04-16 16:04:00) [7]

> [4] Сергей М. ©   (16.04.08 15:59)

А то :)


Res   (2008-04-16 16:01:00) [8]

Подскажите пожалуйста, что делаю неправильно, просто пример был:
#include
#include // хедер с описанием wsa ф-ий

// для ms vc++6.0 и др - подключаем lib'у с импортами wsa ф-ий
#pragma comment( lib, "wsock32.lib" )

int main(int argc, char* argv[])
{
char request[1024*5]; // буффер под запрос
char response[1024]; // буффер под ответ
sockaddr_in s_a;
WSADATA wd; // структура WSADATA

WSAStartup( MAKEWORD( 2, 2 ), &wd ); // инициализируем wsa

SOCKET s = socket( AF_INET, SOCK_STREAM, 0 ); // создаем сокет
if (s == INVALID_SOCKET) return 255; // если ошибка - выход

s_a.sin_addr.s_addr = inet_addr( "89.108.80.80" ); // айпи сервера, в данном случае - античат.ру
s_a.sin_port = htons( 80 ); // порт сервера
s_a.sin_family = AF_INET;

if (connect( s, (struct sockaddr*)&s_a, sizeof( s_a ) ) == SOCKET_ERROR) return 255; // SOCKET_ERROR - невозможно подключится к сереверу

char url[] = "/"; // страница
char host[] = "antichat.ru"; // хост
// формируем запрос
sprintf( request, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n", url, host );

send( s, request, strlen( request ), 0 ); // послать запрос
recv( s, response, 1023, 0 ); // максимум получить 1023 байта

printf( "%s\r\n", response ); // вывести ответ на экран

closesocket( s ); // закрываем сокет
WSACleanup(); // деинициализируем wsa

return 0;
}


Сергей М.   (2008-04-16 15:59:00) [9]


> Dennis I. Komarov ©   (16.04.08 15:57) [3]


Наступал ?)


Dennis I. Komarov   (2008-04-16 15:57:00) [10]

> [2] Сергей М. ©   (16.04.08 15:55)

Знакомые грабли :)


Сергей М.   (2008-04-16 15:55:00) [11]

Она здесь:


>  send( s, request,length(request),0); //раз грабли !
>  recv( s, response, sizeof(s), 0 ); //и еще раз на те же грабли )


Dennis I. Komarov   (2008-04-16 15:46:00) [12]

Ошибку в коде ищет компилятор.


Наверх

Титульная страница Поиск, карта сайта Написать письмо