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 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define MAXLEN 1024
#define HOST_IP "127.0.0.1"
#define HOST_PORT 30000
int pong( const int sock, const char ping[] );
int main( void ){
WSADATA ws;
if( WSAStartup(MAKEWORD(2,2), &ws) != 0 ){
printf("Erreur: WSAStartup( )\n");
system("PAUSE");
return 0;
}
SOCKET sock;
if( (sock=socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET ){
printf("Erreur: socket( )\n");
WSACleanup( );
system("PAUSE");
return 0;
}
SOCKADDR_IN s;
s.sin_family = AF_INET;
s.sin_addr.s_addr = inet_addr(HOST_IP);
s.sin_port = htons(HOST_PORT);
if( connect(sock, (SOCKADDR *)&s, sizeof(s)) == SOCKET_ERROR ){
printf("Erreur: connect( )\n");
WSACleanup( );
system("PAUSE");
return 0;
}
char requete[MAXLEN]="PASS azerty\r\nNICK Fi7\r\nUSER fi7 \"fisept.be\" \"127.0.0.1\" :Fi7\r\n";
if( (send(sock, requete, strlen(requete), 0)) == SOCKET_ERROR ){
printf("Erreur: send( nick,user )\n");
closesocket(sock);
WSACleanup( );
return 0;
}
char buffer[MAXLEN]={0};
if( recv(sock, buffer, sizeof(buffer)-1, 0) == SOCKET_ERROR ){
printf("Erreur: recv( ping )\n");
closesocket(sock);
WSACleanup( );
system("PAUSE");
return 0;
}
if( pong( sock, buffer ) == 0 ){
printf("Erreur: pong( )\n");
closesocket(sock);
WSACleanup( );
system("PAUSE");
return 0;
}
char quit[8]="QUIT :\r\n";
if( send(sock, quit, strlen(quit), 0) == SOCKET_ERROR ){
printf("Erreur: quit( )\n");
closesocket(sock);
WSACleanup( );
system("PAUSE");
return 0;
}
printf("Ok\n");
closesocket(sock);
WSACleanup( );
system("PAUSE");
return 0;
}
int pong( const int sock, const char ping[] ){
int n=0, i=6;
char buffer[16]="PONG :";
for( i=6; i<=13; ++i )
buffer[i]=ping[i];
buffer[i++]='\r', buffer[i++]='\n', buffer[i]='\0';
if( (n=send(sock, buffer, strlen(buffer), 0)) != SOCKET_ERROR )
return n;
else
return 0;
} |
Partager