C / C++ Socket error sous Linux

Résolu/Fermé
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 4 avril 2011 à 22:51
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 avril 2011 à 16:46
Bonjour !

En m'inspirant de ce tutoriel, j'ai écrit un code serveur et un code client. Sous Windows, tout deux fonctionnent bien. Sous Linux, le client s'ouvre normalement mais le serveur renvoi une erreur.

Voici une partie du code :
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr    = htonl(INADDR_ANY);
sin.sin_family         = AF_INET;
sin.sin_port           = htons(23);
sock_result = bind(sock, (SOCKADDR*)&sin, sizeof(sin));

Le problème est que la dernière fonction (bind) renvoi SOCKET_ERROR...

Quelles peuvent être les causes du problème ? Un pare-feu en trop ? Autre chose ?
Merci !
A voir également:

2 réponses

Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
4 avril 2011 à 23:04
Oups.. Jai passé une étape dans le tutoriel :

Vous devez être en mode administrateur (root sous linux) pour faire fonctionner un programme serveur sinon cela risque de ne pas fonctionner.

Faut compiler, ensuite :
sudo ./Serveur


Et là, miracle, ca marche ! :)
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
5 avril 2011 à 08:28
Salut.
Je fait tourner des serveur sous Linux sans être root, et ils tournent.
ça doit être prorpre à certaine distribution (genre Ubuntu non ?) ou certaines options de sécurité.
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
5 avril 2011 à 16:41
Salut, j'ai testé sous Ubuntu 10.04 et 10.10, et dans les deux distribs ils faut être en mode root...
Le jour où j'aurai une autre distribution à portée de main, j'essaierai ;)
Options de sécurité : Est-ce possible qu'un pare-feu bloque l'ouverture du port, et qu'en étant en root ce bloquage de la part du pare-feu soit désactivé ? Parce qu'alors, ouvrir par défaut le pare-feu serait la solution.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
5 avril 2011 à 16:46
Le parefeu, je n'y crois pas trop : en général, il bloque le port mais n'empêche pas le serveur de tourner. Le plus simple est de le désactiver pour tester. J'ai testé sur Red Hat et Fedora. Si j'ai le temps je testerai sur ma Mandriva. Je n'en sais pas plus que ça. Pose la question directement dans le forum Linux, tu auras peut être une réponse.
0