[mdk-re] HTTP, c++ и Linux
=?iso-8859-1?q?denf_=CE=C1_novosoft=2Eru?=
=?iso-8859-1?q?denf_=CE=C1_novosoft=2Eru?=
Вт Дек 12 15:39:01 MSK 2000
Добрый день!
12/12/2000 05:34:36 PM mandrake-russian-admin wrote:
>Здравствуйте, Господа!
>
>Сразу хочу извиниться за оффтопик, но, к сожалению, не смог найти
>нужную мне информацию в других местах. Здесь, вероятно, есть много
>программистов. Может кто-нибудь мне подскажет, как на Си под Линукс
>написать программу, которая соединяется в WWW сервером на 80-ом порту
>и посылает туда запросы (GET, POST). Или посоветуйте, где можно
>что-нибудь почитать на эту тему. А, может быть, у кого-нибудь есть
>что-нибудь похожее. Ответ сервера сохранять не нужно, важен сам факт
>подачи запроса. Пожалуйста помогите, очень нужно.
Примерно вот так:
const char hostname[] = "localhost";
struct sockaddr_in addr;
int sock;
char result[1024];
FILE *conn;
struct hostent* host = gethostbyname( hostname );
sock = socket( PF_INET, SOCK_STREAM, IPPROTO_IP );
addr.sin_port = htons(80);
addr.sin_addr.s_addr = *(unsigned long*) host->h_addr;
addr.sin_family = AF_INET;
if ( connect( sock, (struct sockaddr*) &addr, sizeof(addr) ) ) {
perror( "cannot connect()" );
exit(1);
}
// соединение установлено, можно писать/читать различными способами
(send/recv) или (write/read). Ответ сервера надо прочитать, даже если он не
нужен.
conn = fdopen( sock, "r+" );
fprintf( conn, "GET / HTTP/1.0\n\n" );
fflush( conn );
while( !feof(conn) ) {
fgets( result, sizeof(result), conn );
printf( "%s", result );
}
fclose( conn );
С уважением,
Денис.
Подробная информация о списке рассылки community