Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с сокетами на C++

Этот простой пример скачивает главную страницу CodeNet.ru.

#include <cstring>
#include <stdlib.h>
#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <string.h>
#include <assert.h>
#include <stdio.h>
#include <sstream>

char var[]={"http://www.codenet.ru/"};
std::string m = "GET / HTTP/1.1\r\nHost: ";
std::string s="\r\n"
                 "User-Agent: Mozilla/5.0\r\n"
                 "Accept: text/html\r\n"
                 "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
                 "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
                 "Connection: keep-alive\r\n\r\n";
 
char message[999];
char buf[1];
int main(int argc, char* argv[])
{
    std::stringstream conv;
    conv<<m<<var<<s;
    conv.read(message,999);
    std::cout<<message<<std::endl<<std::endl;
    int sock;
    struct sockaddr_in addr;
    struct hostent* raw_host;
    raw_host = gethostbyname(var);
    if (raw_host == NULL)
    {
    std::cout<<"ERROR, no such host";
    exit(0);
    }
    sock = socket(AF_INET, SOCK_STREAM, 0);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(80);
    bcopy((char *)raw_host->h_addr,(char *)&addr.sin_addr, raw_host->h_length);
        if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
       std::cerr<<"connect error"<<std::endl;
        exit(2);
    }
     send(sock, message, sizeof(message), 0);
    recv(sock, buf, sizeof(buf), 0);
    std::cout<<buf;
    while(buf)
    {
        buf[0]=NULL;
    recv(sock, buf, sizeof(buf), 0);
    std::cout<<buf;
 
    }
 
    return (EXIT_SUCCESS);
}

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог