/************************** * TCP Client Dependency * *************************** * Designed & Developed by * * Adrien Marquès * * * *************************** * doowap31@gmail.com * **************************/ #include "client.h" int TCP_CONNECT(int* pSocket, const in_addr_t pAddr, const int pPort, const time_t pTimeout, struct sockaddr_in* pInfo){ /* [0] Initialisation des variables =========================================================*/ struct timeval timeout; *pSocket = -1; /* [1] Création de la socket =======================================================*/ /* 1. Création de la socket */ *pSocket = socket(AF_INET, SOCK_STREAM, 0); /* 2. Gestion erreur */ if( *pSocket < 0 ) return -1; /* 3. Gestion timeout */ timeout.tv_sec = pTimeout; timeout.tv_usec = 0; if( setsockopt(*pSocket, SOL_SOCKET, SO_RCVTIMEO, (char*) &timeout, sizeof(struct timeval) ) < 0 ){ close(*pSocket); return -1; } /* [2] On définit les infos de la socket =========================================================*/ /* (1) Reset des valeurs */ bzero(pInfo, sizeof(struct sockaddr_in)); /* (2) On définit les infos */ pInfo->sin_family = AF_INET; pInfo->sin_port = htons(pPort); pInfo->sin_addr.s_addr = pAddr; /* [3] On se connecte au serveur =========================================================*/ if( connect(*pSocket, (struct sockaddr*) pInfo, sizeof(struct sockaddr_in)) < 0 ) return -1; /* [n] Code succès =========================================================*/ return 0; }