Bonjour,
Je voudrai développé ma propre fonction de fermeture de socket.
Ma fonction s'appelle close_socket_s et fait appel à close (linux) ou closesocket(windows).
Mon problème est le type de paramètre qu'il faut lui donner:
- close_socket_s(SOCKET * sock)
ou
- close_socket_s(SOCKET sock)
D'après moi un SOCKET et un int donc il faudrait logiquement passer en paramètre un pointeur de socket.
Mais d'après les tests que j'ai fait les deux ont l'air de fonctionner.
Je n'ai fait mes tests que sous windows xp.
close_socket_s(SOCKET sock):
close_socket_s(SOCKET * sock):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 BOOL close_socket_s(SOCKET socket){ BOOL ret = TRUE; #if defined (WIN32) if(closesocket(socket) == SOCKET_ERROR) { if( DISPLAY_ERROR_MESSAGE ) display_socket_error("Error.close_socket_s().closesocket()"); ret = FALSE; } #else if(close(socket) == SOCKET_ERROR) { if( DISPLAY_ERROR_MESSAGE ) display_socket_error("Error.close_socket_s().close()"); ret = FALSE; } #endif } return ret; }
Sous windows le type de SOCKET est bien aussi un int? J'ai cherché dans les msdn sans résultats.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 BOOL close_socket_s(SOCKET * socket){ BOOL ret = TRUE; if( socket == NULL ) { if ( DISPLAY_ERROR_MESSAGE ) fprintf(stderr, "Error.close_socket_s(): socket is NULL.\r\n"); ret = FALSE; } else { #if defined (WIN32) if(closesocket(*socket) == SOCKET_ERROR) { if( DISPLAY_ERROR_MESSAGE ) display_socket_error("Error.close_socket_s().closesocket()"); ret = FALSE; } #else if(close(*socket) == SOCKET_ERROR) { if( DISPLAY_ERROR_MESSAGE ) display_socket_error("Error.close_socket_s().close()"); ret = FALSE; } #endif } return ret; }
Partager