crabs_usbmgr-1.0.3 ©2004-2006 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)
1 /* 2 **============================================================================= 3 ** crabs_usbmgr-1.0.3 : Universal Serial Bus MaNaGer 4 ** Copyright (C) 2004-2006 : Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com) 5 ** 6 ** Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer 7 ** et/ou le modifier en respectant les termes de la GNU General Public License 8 ** version 2 ou (suite a votre propre choix) une version ulterieure. 9 ** 10 ** Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais 11 ** sans aucune garantie, meme si il est associe a un produit qui vous en 12 ** propose une. Conformez-vous a la GNU General Public License pour avoir 13 ** plus de precisions. 14 ** 15 ** L'auteur ne peut etre tenu responsable de l'utilisation faite des 16 ** composantes associees a ce projet (en partie ou dans leur totalite). 17 ** 18 ** Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC 19 ** de ce projet sous le nom gnu_gpl.txt 20 ** 21 **============================================================================= 22 */ 23 #include <sys/types.h> 24 #include <sys/socket.h> 25 #include <netdb.h> 26 #include <netinet/in.h> 27 #include <errno.h> 28 #include <string.h> 29 30 int serv_tcp_simple( const char *service, char *err ) 31 { 32 int sa ; 33 char on [4] ; 34 struct sockaddr_in svr ; 35 struct servent * sp ; 36 37 if ( ! ( sp = getservbyname( service, "tcp" ) ) ) 38 { 39 sprintf( err, "serv_tcp_simple:getservbyname(%s):%s", service, 40 strerror(errno) ) ; 41 return -1 ; 42 } 43 44 svr.sin_port = sp->s_port ; 45 svr.sin_addr.s_addr = INADDR_ANY ; 46 svr.sin_family = AF_INET ; 47 48 if ( (sa = socket ( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) 49 { 50 sprintf( err, "serv_tcp_simple:socket():%s", strerror(errno) ) ; 51 return -1 ; 52 } 53 54 memset( on, 0, 4 ) ; on[3] = 1 ; 55 if ( setsockopt(sa, SOL_SOCKET, SO_REUSEADDR, on, 4) == -1 ) 56 { 57 sprintf( err, "serv_tcp_simple:sockopt():%s", strerror(errno) ); 58 return -1 ; 59 } 60 if ( bind ( sa, (struct sockaddr*)&svr, sizeof(svr) ) == -1 ) 61 { 62 sprintf( err, "serv_tcp_simple:bind():%s", strerror(errno) ) ; 63 return -1 ; 64 } 65 if ( listen ( sa, 5 ) == -1 ) 66 { 67 sprintf( err, "serv_tcp_simple:listen():%s", strerror(errno) ) ; 68 return -1 ; 69 } 70 return sa ; 71 } 72
Date de génération : 22/09/2011 21:48