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 67 68 69 70 71 72 73 74 75
| #include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
int init(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return SOCKET_ERROR; //impossible de charger winsock.dll
}
//-- Ceci permet de vérifier que Winsock supporte bien la version 2.0 --//
if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 )
{
WSACleanup();
return SOCKET_ERROR; //impossible de charger winsock.dll
}
else
{
return 1; //Winsock.dll succefully initialised
}
}
// On initialise et connect le socket
void initSocket (char *addr, int port, SOCKET *sock, SOCKADDR_IN *sin)
{
sin->sin_addr.s_addr = inet_addr(addr);
sin->sin_family = AF_INET;
sin->sin_port = htons(port);
*sock = socket(AF_INET,SOCK_STREAM,0);
bind(*sock, (SOCKADDR *)sin, sizeof(SOCKADDR_IN));
connect(*sock, (SOCKADDR *)sin, sizeof(SOCKADDR_IN));
}
void closeSocket (SOCKET sock)
{
closesocket(sock);
WSACleanup();
}
int main ()
{
SOCKET sock;
SOCKADDR_IN sin;
char *buffer = (char*)malloc(1024);
char *mdp = "qqchose";
init();
initSocket("127.0.0.1", 8189, &sock, &sin);
int err;
do
{
GetLastError();
memset(buffer,0,1024);
err=recv(socket,buffer,1024,0);
GetLastError();
if(err==SOCKET_ERROR)
{
int error = GetLastError();
printf("Erreur dans la reception: %d\n", error);
break;
}
printf("Le serveur a envoye :\n%s\n",buffer);
}
while(err > 0);
send(sock,mdp,strlen(mdp),0);
free(buffer);
closeSocket(sock);
return 0;
} |
Partager