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
|
bool res = true;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
char* nomDest = NULL;
int port;
if(argc == 5){
if(!strcmp(argv[1],"-host") && !strcmp(argv[3],"-port")){
nomDest = argv[2];
port = atoi(argv[4]);
} else if(!strcmp(argv[3],"-host") && !strcmp(argv[1],"-port")){
nomDest = argv[4];
port = atoi(argv[2]);
}
} else if(argc == 3) {
if(!strcmp(argv[1],"-host")){
nomDest = argv[2];
port = 9999;
} else if(!strcmp(argv[1],"-port")){
nomDest = "localhost";
port = atoi(argv[2]);
}
} else if(argc == 1) {
nomDest = "localhost";
port = 9999;
} else {
usage(argv[0]);
res = false;
}
if (res){
// Résolution DNS à partir du nom de la machine
HOSTENT* host = gethostbyname(nomDest);
//Initialisation de la structure sockaddr_in
SOCKADDR_IN destinataire;
destinataire.sin_family = AF_INET;
destinataire.sin_port = htons(port);
memcpy(&destinataire.sin_addr, host->h_addr, host->h_length);
for(int i=0; i<8; i++) destinataire.sin_zero[i] = 0;
// Initialisation du socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET){
std::cerr << "Erreur à l'ouverture du socket" << std::endl;
res = false;
} else std::cerr << "Socket ouvert" << std::endl;
int connecte = connect(sock, (SOCKADDR*)&destinataire, sizeof(destinataire));
if(connecte == SOCKET_ERROR){
std::cerr << "Echec de la connexion à " << nomDest << " - " << connecte << std::endl;
res = false;
} else {
std::cout << "Connecté" << std::endl;
}
} |
Partager