![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка
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]Ошибку в коде ищет компилятор.