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