erreur connect (): opération non autorisée

Je travaille sur des exemples dans la programmation réseau UNIX et j’ai adapté «daytimeclientcli.c» à ce code spécifique à Linux (ces exemples utilisent BSD). J’ai exécuté le programme contre les serveurs de temps ici . Quel que soit le serveur, l’ connect error: Operation not permitted qui correspond à la valeur de retour de l’appel à la connexion (). J’ai cherché autour mais je ne trouve rien qui y soit lié. Toute aide est grandement appréciée.

 #include  #include  #include  #include  #include  #define BUFFER 80 int main(int argc, char **argv) { int sockfd; int n; char buf[BUFFER+1]; struct sockaddr_in servaddr; /* need a pointer to socketaddr for call to connect() */ struct sockaddr* ptr; if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { fprintf(stderr, "socket error\n"); return 2; } memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); if (inet_pton(AF_INET, argv[1], &servaddr) <= 0) { fprintf(stderr, "inet_pton error for %s\n", argv[1]); return 3; } ptr = (struct sockaddr*) &servaddr; if (err = connect(sockfd, ptr, sizeof(servaddr))  0); if (n < 0) { fprintf(stderr, "read error: %d\n", n); return 5; } else { /* null-terminate the buffer */ buf[n] = 0; printf("%s\n", buf); } if (n < 0) { fprintf(stderr, "read error"); return 5; } return 0; } 

L’appel connect () échoue car servaddr n’a pas été initialisé correctement. Dans l’appel à inet_pton (), essayez de remplacer “& serv_addr” par “& serv_addr.sin_addr”.