IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Socket client en C, champs obligatoires


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut Socket client en C, champs obligatoires
    Bonjour,

    Je travaille sur les sockets en C et je bute sur la question suivante pour les sockets en mode connecté et non connecté :

    Est-il exact que, lors de la création de la socket, le remplissage des champs d'identification de l’expéditeur ne sont pas obligatoires ? Si oui, est-ce que cela implique que, dans les entêtes du protocole IP, les champs de la source du message peuvent être vides ?

    Merci de vos réponses

    Marc_3

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Ce sont deux choses distinctes :

    En premier lieu, tu vas créer un socket pour un type de communication donné. En ce sens, tu crées donc un « point de communication », que tu vas ensuite utiliser comme tu le sens.

    Ensuite, tu peux lier (avec bind()) ce socket à une adresse réseau si c'est nécessaire, mais ça ne l'est pas toujours. Ça se justifie si tu comptes te mettre à l'écoute d'une adresse, ou si tu utilises un protocole qui impose que le point de départ soit connu. Rien ne dit en revanche que les sockets doivent être forcément exploités en TCP/IP, ni même utiliser le réseau.

    Les champs IP et TCP « expéditeur » ne seront jamais vides, mais ils seront gérés de manière transparente par le système. Si un client ne lie pas son socket à un port local, alors le système en choisira un pour lui à la connexion, et c'est comme cela que ça doit fonctionner en temps normal. D'ailleurs, ce même système aura aussi tendance à blacklister temporairement (de l'ordre d'une à deux minutes) une adresse locale récemment utilisée pour en forcer la rotation et pour éviter toute ambiguïté « à l'autre bout du fil ».

    C'est ce genre de facétie qui rend perplexes les novices, quand il n'est pas possible de lancer deux fois de suite le même serveur, par exemple. Il faut passer l'option SO_REUSEADDR pour libérer explicitement l'adresse réseau allouée quand le socket associé est refermé.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut
    Merci pour la réponse cela m'est utile, pour dissiper les brouillards de ma perplexité, ,
    I ly a encore fort a faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test si champs obligatoires remplis
    Par michaelbob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/09/2005, 14h20
  2. Champs obligatoires
    Par JustMe dans le forum Bases de données
    Réponses: 15
    Dernier message: 18/11/2004, 20h54
  3. Couper la connexion d'un socket client...
    Par Higestromm dans le forum Développement
    Réponses: 4
    Dernier message: 28/10/2004, 10h41
  4. Réponses: 2
    Dernier message: 12/10/2004, 13h04
  5. [SOCKET] Client C connecté à un serveur Java
    Par missllyss dans le forum Développement
    Réponses: 2
    Dernier message: 07/06/2004, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo