Programmation de sockets Permission refusée

Le code suivant est un programme de serveur TCP, il suffit de renvoyer «HELLO !!» au client.

Lorsque j’exécute le serveur avec le port 80, bind () est renvoyé Permission denied .

Le port 12345 est OK.

Comment utiliser le port 80 pour ce programme serveur?

 #include  #include  #include  #include  #include  int main(){ int sock0; struct sockaddr_in addr; struct sockaddr_in client; int len; int sock; char *message; message = "HELLO !!"; sock0 = socket(AF_INET,SOCK_STREAM,0); addr.sin_family = AF_INET; addr.sin_port = htons(80); inet_pton(AF_INET,"127.0.0.1",&addr,sizeof(addr)); bind(sock0,(struct sockaddr *)&addr,sizeof(addr)); perror("bind"); len = sizeof(client); sock = accept(sock0,(struct sockaddr *)&client,&len); perror("accept"); write(sock,message,sizeof(message)); perror("write"); close(sock); return 0; } 

Les ports inférieurs à 1024 sont considérés comme “privilégiés” et ne peuvent être liés qu’à un utilisateur ayant les mêmes privilèges (lecture: racine ).

Tout ce qui est au-dessus et y compris 1024 est “libre d’utilisation” par quiconque.

OT: vous le savez peut-être déjà, mais le port de votre exemple est celui des serveurs Web HTTP. Tout ce qui écoute ce port devrait aussi parler HTTP. Un simple “bonjour le monde” ne suffit pas. 😉

Seul l’utilisateur root est autorisé à se connecter aux ports <= 1024. Tous les ports> 1024 peuvent être liés aux utilisateurs normaux.

Essayez d’exécuter votre programme en tant que root ou avec sudo .

vous devez exécuter votre application avec un compte super utilisateur (root)

Exécuter votre application avec la commande sudo