C / C++ Socket error sous Linux

Résolu
Bilow Messages postés 1193 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
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 1193 Statut Membre 117
 
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 10112 Statut Contributeur 1 299
 
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 1193 Statut Membre 117
 
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 10112 Statut Contributeur 1 299
 
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