Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Внизошибка Найти похожие ветки
← →
Res (2008-04-16 15:45) [0]Здравствуйте! Помогите пожалуйста найти ошибку в коде.
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 15:46) [1]Ошибку в коде ищет компилятор.
← →
Сергей М. © (2008-04-16 15:55) [2]Она здесь:
> send( s, request,length(request),0); //раз грабли !
> recv( s, response, sizeof(s), 0 ); //и еще раз на те же грабли )
← →
Dennis I. Komarov © (2008-04-16 15:57) [3]> [2] Сергей М. © (16.04.08 15:55)
Знакомые грабли :)
← →
Сергей М. © (2008-04-16 15:59) [4]
> Dennis I. Komarov © (16.04.08 15:57) [3]
Наступал ?)
← →
Res (2008-04-16 16:01) [5]Подскажите пожалуйста, что делаю неправильно, просто пример был:
#include <stdio.h>
#include <winsock2.h> // хедер с описанием 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;
}
← →
Dennis I. Komarov © (2008-04-16 16:04) [6]> [4] Сергей М. © (16.04.08 15:59)
А то :)
← →
Сергей М. © (2008-04-16 16:09) [7]
> Res (16.04.08 16:01) [5]
Граблей тут навалом разных)
Начнем с самых легких - строки какого конкретно содержимого ты намериваешься передавать параметром url в свою функцию ?
← →
Anatoly Podgoretsky © (2008-04-16 16:09) [8]> Dennis I. Komarov (16.04.2008 15:46:01) [1]
Ты не прав, ошибки в коде ищут форумы.
← →
Res (2008-04-16 16:16) [9]Может перестанете флуд разводить ;) и подскажите что я делаю не так.
И еще вопрос
Можно ли вместе IP указывать хост?
← →
Res (2008-04-16 16:18) [10]вместо*
← →
Сергей М. © (2008-04-16 16:22) [11]
> что я делаю не так
Ты не понимаешь разницы между дельфийскими длинными строками и статическими массивами.
> Можно ли вместе IP указывать хост?
Где ты его хочешь указывать ?
← →
Dennis I. Komarov © (2008-04-16 16:27) [12]> [8] Anatoly Podgoretsky © (16.04.08 16:09)
Не, тут уже ищут ошибки "тараканов в голове" :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c