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
|
int not = 0;
unsigned long ioctl_blocking = 1;
WSADATA wsaData;
if( int err = WSAStartup( 0x0101, &wsaData ) )
{
return 0;
}
struct sockaddr_in serverSockAddr; // addresse de la socket
struct hostent * serverHostEnt; // description du host serveur
long hostAddr; // addr du serveur
Effacer( &serverSockAddr, sizeof( serverSockAddr ) );
// converti l'adresse ip du serveur en entier long
hostAddr = inet_addr( nom_serveur );
if( ( long ) hostAddr != ( long ) -1 )
Dupliquer( &hostAddr, &serverSockAddr.sin_addr, sizeof( hostAddr ) );
else // si on a donne un nom
{
serverHostEnt = gethostbyname( nom_serveur );
if ( serverHostEnt == NULL )
{
return 0;
}
Dupliquer( serverHostEnt->h_addr, &serverSockAddr.sin_addr,serverHostEnt->h_length );
}
serverSockAddr.sin_port = htons( port ); // host to network port
serverSockAddr.sin_family = AF_INET; // AF_*** : INET=internet
// creation de la socket
to_server_socket = socket( AF_INET, SOCK_STREAM, 0 );
if ( to_server_socket < 0)
{
return 0;
}
setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) ¬, sizeof(not));
// requete de connexion
if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr,sizeof( serverSockAddr ) ) < 0 )
{
return 0;
}
ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );
return 1; |
Partager