Bonjour,
J'aimerai realiser un serveur qui n'accepte qu'une seule connexion. Ce serveur doit être dédié au client qui se connecte en premier. j'ai l'option backlog à 0, mais mon deuxième client arrive toujours a se connecter.
Est ce que quelqu'un connaitrait l'option qui autorise une seule connexion.
# Euh ?
Posté par petit_bibi . Évalué à 0.
Pour la connection unique, il y a netcat:
nc -l -p 8080
[^] # Re: Serveur Unix
Posté par Nicolas MEDERLE . Évalué à 2.
Je vous remercie d'avance.
# Paramètre backlog...
Posté par mrlem (site web personnel) . Évalué à 2.
Le paramètre backlog ne fera pas ce que tu veux pour la valeur 0 : zéro positionne la taille de la file de requêtes à la taille par défaut de l'OS, et non pas à zéro. Celà ne te semble pas acceptable de fermer les autres connexions entrantes ?
[^] # Re: Paramètre backlog...
Posté par Nicolas MEDERLE . Évalué à 1.
En fait le programme serveur est une machine d'état. Dans l'initialisation de la machine d'état, le serveur ouvre la connexion avec listen, ensuite dans le premier état il accepte une connexion, et suit sa machine d'état. C'est un mono thread, donc je ne repasse plus par la fonction accept, jusqu'a la fin du traitement. De son coté le client se connecte au serveur avant de commencer sa machine d'état. L'inconvénient, c'est que le deuxieme client a un retour positif de sa connexion, et déroule lui aussi sa machine d'état. Ce qui me fait deux client sur le meme serveur, et le serveur s'enmele les crayons. Et moi je voudrais que la connexion lui soit refusé et qu'il attende que le serveur soit libre.
je vous remercie par avance.
[^] # Re: Paramètre backlog...
Posté par LaBienPensanceMaTuer . Évalué à 3.
En gros:
Ca fait un petit moment que j'ai pas fait de C, corrigé moi donc si je me trompe.
[^] # Fonction accept()
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 1.
Les socket tcp sont on va dire 'mono-connection' aussi quand on désire faire un système multi-utilisateurs on défini une socket <<d'appel>> ou <<de signalisation>>.
Quand le client se connecte sur ce port de signalisation le serveur, via la commande accept() redirige cette connection sur une autre socket.
Ex: 1.1.1.1 se connecte a 1.1.1.2 sur depuis le port 1234 sur le port 80.
le serveur accept la connection et 1.1.1.1 et 1.1.1.2 se parlent via les ports 1234 (1.1.1.1) et 4567 (1.1.1.2)
et ceci afin de laisser le port 80 disponible pour d'autres).
Toi ce que tu veut c'est justement le fonctionnement normal d'une socket, il te suffit de creer ta socket d'ecoute et de la lire (ou d'utiliser select() pour valider que quelqu'un est connecté).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.