ALT Linux Community general discussions
 help / color / mirror / Atom feed
* Re: [mdk-re] HTTP, c++  и Linux
@ 2000-12-12 15:39 denf
  2000-12-12 16:08 ` [mdk-re] Re[2]: " Roman Shumikhin
  0 siblings, 1 reply; 2+ messages in thread
From: denf @ 2000-12-12 15:39 UTC (permalink / raw)
  To: mandrake-russian


Добрый день!

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 );

С уважением,
Денис.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [mdk-re] Re[2]: [mdk-re] HTTP, c++  и Linux
  2000-12-12 15:39 [mdk-re] HTTP, c++ и Linux denf
@ 2000-12-12 16:08 ` Roman Shumikhin
  0 siblings, 0 replies; 2+ messages in thread
From: Roman Shumikhin @ 2000-12-12 16:08 UTC (permalink / raw)
  To: denf@novosoft.ru

Здравствуйте, 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> Денис.





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2000-12-12 16:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-12-12 15:39 [mdk-re] HTTP, c++ и Linux denf
2000-12-12 16:08 ` [mdk-re] Re[2]: " Roman Shumikhin

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git