[C] descripteur de socket sous Linux

Résolu
Bonjour,

Je suis en train de développer un serveur sous Linux et je souhaiterais savoir comment passer à une fonction un descripteur de socket.

le descripteur de socket se définit de cette façon :

fd_set nom_du descripteur;

example d'utilisation :

FD_ZERO(&nom_du_descripteur);

Mon souhait serait donc de faire passer ce descripteur à une fonction par l'intermédiaire d'un pointeur je pense.

Merci de votre aide.

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Super ça fonctionne ... et dire que je comprend rien au pointeur :(

    Merci pour ton aide Char Snipeur
    1. Contributeur
      En fait, je n'ai jamais utiliser fd_set pour faire des socket.
      Moi, j'utilise <socket.h> et j'ai des descripeur ayant comme type SOCKET et SOCKADDR. Mais je ne pense pas qu'il y ai un problème.
      Il faudrai que tu m'en dise un peu plus sur ce que tu inclu, ton OS, etc...
      mais je dirait:
      int FD_ZERO(fd_set*);//mefie toi des non en maj qu'ils ne soient pas associer à des macro
      int main(){
        fd_set*  descripteur;
      //initialisation du descripteur
        FD_ZERO(descripteur);
        return 0;}
      int FD_ZERO(fd_set x){
      //traitement sur x
      return 1;}
      1. Tu pourrais me montrer comment tu fais car je n'y arrive pas ;)
        D'avance merci.
        1. Contributeur
          oui c'est possible, tu peux passer ton descripteur de socket comme n'importe quelle autre variable.
          Je ne sais pas si ça répond à ta question...
          Je ne comprend vraiment pas ce qui t'embete.
          1. Je me suis mal exprimé je pense.

            Je veux créer une fonction dans laquel je souhaite passer en paramètre le descripteur de socket, est-ce possible ?
            Si oui comment puis-je faire ?
            1. Contributeur
              Salut.
              Je voi vraiment pas où est le problème.
              FD_ZERO(&nom_du_descripteur); doit fonctionner !
              ou alors fd_set est déjà un pointeur, à ce moment, il suffit de faire
              FD_ZERO(nom_du_descripteur); pour vérifier, il suffit de tester :)