1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include<iostream>
#include<string>
#include<winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
struct in_addr resolve (char *name)
{
static struct in_addr in;
unsigned long l;
struct hostent *ent;
if ((l = inet_addr(name)) != INADDR_NONE)
{
in.s_addr = l;
return in;
}
if (!(ent = gethostbyname(name)))
{
in.s_addr = INADDR_NONE;
return in;
}
return *(struct in_addr *)ent->h_addr;
}
int main(void)
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,2), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
string mess;
char messchar[150];
sin.sin_addr = resolve("www.google.fr");
sin.sin_family = AF_INET;
sin.sin_port = htons(80);
cout<<"\tcreation du socket";
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sock < 0) // Au cas ou la création de la socket ne fonctionnerais pas
{
cerr<<"\nImpossible de creer la socket\n";
return 1;
}
cout<<"\r[ok]\n\tconnection au serveur";
if (connect(sock,(struct sockaddr *)&sin, sizeof sin) < 0)
{
cerr<<"\nImpossible de se connecter au serveur\n";
return 1;
}
cout<<"\r[ok]\n\n";
mess="GET www.google.fr/index.html HTTP/1.1 \r\n\r\n";
cout<<"\tenvois de \""<<mess<<"\"";
send(sock, mess.c_str(), sizeof(mess),0);
cout<<"\r[ok]\n";
cout<<"\tattente reponse du serveur";
recv(sock, messchar, 150, 0);
cout<<"\r[ok]\n";
mess=messchar;
cout<<mess;
closesocket(sock);
WSACleanup();
return 0;
} |
Partager