Собственно недавно открыл учебник по C++, прочитал,показалось достаточно нетяжело,но вот возник вопрос по работе с сетью.А именно - получением информации по средству http.Статей для моего уровня знаний не нашол. И так, нужен простейший код соединения с http и принятием информации.Тоесть. url = "antichat.ru"; ..... и наприер в переменной content остаеться всен содержимое страницы. Скрипт нужен только для изучения.Если нужны стоонние класы или библиотеки,пожалуйста с названием.И если таковая имееться - литература по ним.Спасибо.
Посмотри темой ниже, только что там отписал) /thread125744.html Насчет литературы - http://msdn.microsoft.com/en-us/library/ms741394(VS.85).aspx
Code: #include <windows.h> #include <stdio.h> #include <string.h> #pragma comment(lib, "ws2_32.lib") char* OpenURL(char *url) { WSADATA lpWSAData; SOCKET s; // Проверим на правильность введенный адрес. // Он должен начинаться с "http://" if (memcmp(url,"HTTP://",7)!=0 && memcmp(url,"http://",7)!=0) return(NULL); url+=7; // Инициализация библиотеки Ws2_32.dll. if (WSAStartup(MAKEWORD(1,1),&lpWSAData)!=0) return(NULL); // Получим имя хоста, номер порта и путь ---------------------------- char *http_host=strdup(url); // Имя хоста (HTTP_HOST) int port_num=80; // Номер порта по умолчанию (HTTP_PORT) char *http_path=NULL; // Путь (REQUEST_URI) char *pch=strchr(http_host,':'); if (!pch) { pch=strchr(http_host,'/'); if (pch) { *pch=0; http_path=strdup(pch+1); } else http_path=strdup(""); } else { *pch=0;pch++; char *pch1 = strchr(pch,'/'); if (pch1) { *pch1=0; http_path=strdup(pch1+1); } else http_path=strdup(""); port_num = atoi(pch); if (port_num==0) port_num = 80; } // Поучаем IP адрес по имени хоста struct hostent* hp; if (!(hp=gethostbyname(http_host))) { free(http_host); free(http_path); return(NULL); } // Открываем сокет s=socket(AF_INET, SOCK_STREAM, 0); if (s==INVALID_SOCKET) { free(http_host); free(http_path); return(NULL); } // Заполняем структуру sockaddr_in struct sockaddr_in ssin; memset ((char *)&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0]; ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1]; ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2]; ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3]; ssin.sin_port = htons(port_num); // Выводим IP адрес хоста, с которым будем соединятся printf("Conecting to %d.%d.%d.%d...",(unsigned char)hp->h_addr[0], (unsigned char)hp->h_addr[1], (unsigned char)hp->h_addr[2], (unsigned char)hp->h_addr[3]); // Соединяемся с хостом if (connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1) { free(http_host); free(http_path); printf("Error\n"); return(NULL); } printf("Ok\n"); // Формируем HTTP запрос char *query=(char*)malloc(2048); strcpy(query,"GET /"); strcat(query,http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query,http_host); strcat(query,"\nUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); strcat(query,"\nAccept: */*\n\n"); // Выводим HTTP запрос printf("%s",query); // Отправляем запрос серверу int cnt=send(s,query,strlen(query),0); // Освобождаем память free(http_host); free(http_path); free(query); // Проверяем, не произошло ли ошибки при отправке запроса на сервер if (cnt==SOCKET_ERROR) return(NULL); cnt=1; // Получаем ответ с сервера --------------------------------- int size=1024*1024; // 1Mb char *result=(char*)malloc(size); strcpy(result,""); char *result_ptr=result; while (cnt!=0 && size>0) { cnt=recv (s, result_ptr, sizeof(size),0); if (cnt>0) { result_ptr+=cnt; size-=cnt; } } *result_ptr=0; // Деинициализация библиотеки Ws2_32.dll WSACleanup(); return(result); } void main(void) { char *result=OpenURL("/"); if (result) { printf("%s",result); free(result); } else { printf("Error # WSABASEERR+%d\n",WSAGetLastError()-WSABASEERR); } getchar(); getchar(); }
в вижуал есть. только если ты делаешь на чистом win32 проекте без мфц, то это просто редактор. Если проект мфц - то код опять же упрощается. Выбираешь обрабатываемое событие или сообщение, добавляешь обработчик, указываешь, в какой класс засунуть обработчик и все. Но советую начать с обычных вин32 окошек. Ибо горе делфи не учит работе системы. Учит тока растянуть батон тут, клацнуть там. Чтобы создалось простое окно делаешь в студии проект вин32 не емпти и не консольный. Открываешь меню view->resource view. Там в дереве dialogs и вперед. Основное окно создается на апи, эбаут создается на шаблоне из ресурсов. Основное окно тоже может быть из ресурсов и создаваться через DialogBox. Советую глянуть firststeps.ru так вроде были основы. И мсдн побольше читай
ну вообще суть с++ не в гуи =) для начала стоит научиться использовать ооп. создавать классы, распределять по ним методы, фтыкнуть полиморфизм и наследование. идеально для этого подходит консольное приложение. реши, чего именно ты хочешь добиться. писать на с++ или просто окошки на с++ делать? если первое - то почитай дейтела "как программировать на с++". если второе - то не советую для этого изучать с++ =) очень быстро поймешь, что с++ несколько отличается от того же делфи. тут нада все таки продумывать архитектуру программ, да и управление памятью по началу без опыта будет давать кучу проблем. по гуям есть смысл почитать "Win32 API. Разработка приложений для Windows" Щупак Ю.
может сначала стоит поискать в гугле ? а не спрашивать как вывести текст, как сделать то и то, все это хорошо гуглится уже миллион статей написано по данному сабжу.