* 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