
31.07.2009, 00:08
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
Тот код я просто скопировал, не проверял.
А вот правильный, проверенный, специально для тебя:
Код:
#include <winsock2.h> //winsock header
#pragma comment( lib, "ws2_32.lib" ) //winsock lib
#include "iostream"
using namespace std;
int main()
{
cout << "Work" << endl;
char servername[]="forum.antichat.net";
int port=80;
//Загружаем ВинСок
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {//проверяем загрузилась ли
cout << "Error load winsock2" << endl;
return 0;
}
struct sockaddr_in server;
struct hostent *host = NULL;
SOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//Создаем сокет
if (sClient == INVALID_SOCKET) {//проверяем, нормально ли создался сокет
cout << "Invalid socket" << endl;
return 0;
}
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(servername);
if (server.sin_addr.s_addr == INADDR_NONE) //Если указано имя, а не айпишник
{
host = gethostbyname(servername);//пробуем его определить
if (host == NULL) {
cout << "Can't get IP by hostname..." << endl;
return 0;
}
CopyMemory(&server.sin_addr, host->h_addr_list[0],host->h_length);
}
if (connect(sClient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) {
cout << "Connect filed" << endl;
return 0;
}
//Все, подключились...-----------
int ret;
char zapros[]="GET / HTTP/1.1\r\nHost: forum.antichat.net\r\nConnection: Close\r\n\r\n";
ret=send(sClient, zapros, strlen(zapros)+1, 0);//Шлем данные
if(ret==SOCKET_ERROR) {
cout << "Socket error" << endl;
return 0;
}
int stat=1;
while(stat) {
char get[1024]="";
ret=recv(sClient, get, 1024, 0);//Получаем данные
cout << get;
if(ret==0) stat=0;
if(ret==SOCKET_ERROR) {
cout << "Socket error" << endl;
return 0;
}
}
WSACleanup();//Не забываем выгрузить библиотеку
}
Зайди lstyle.ucoz.ru вторая книга - я с ее примеров начал работать с винсок
Последний раз редактировалось agrofyl2; 31.07.2009 в 00:12..
|
|
|