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

Réseau C Discussion :

serveur totalement inactif


Sujet :

Réseau C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 71
    Points : 38
    Points
    38
    Par défaut serveur totalement inactif
    Bonjour à tous,
    je programme un serveur qui n'a pas vraiment d'utilité pour le moment mais qui ne fonctionne pas.

    la compilation se déroule sans problème mais le programme ne renvoi rien du tout.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h> /* close */
    #include <netdb.h> /* gethostbyname */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #define PORT 80
    #define INVALID_SOCKET -1
    #define SOCKET_ERROR -1
    #define closesocket(s) close(s)
    typedef int SOCKET;
    typedef struct sockaddr_in SOCKADDR_IN;
    typedef struct sockaddr SOCKADDR;
    typedef struct in_addr IN_ADDR;
     
     
    int main()
    {
     
        printf("coucou");
    	SOCKET sock = socket(AF_LOCAL, SOCK_STREAM, 0);
    	if(sock == INVALID_SOCKET)
    	{
    	    perror("socket()");
    	    exit(errno);
    	}
     
    	SOCKADDR_IN sin = { 0 };
     
    	sin.sin_addr.s_addr = htonl(INADDR_ANY); /* nous sommes un serveur, nous acceptons n'importe quelle adresse */
     
    	sin.sin_family = AF_LOCAL;
     
    	sin.sin_port = htons(PORT);
     
    	if(bind (sock, (SOCKADDR *) &sin, sizeof sin) == SOCKET_ERROR)
    	{
    	    perror("bind()");
    	    exit(errno);
    	}
     
    	if(listen(sock, 5) == SOCKET_ERROR)
    	{
    	    perror("listen()");
    	    exit(errno);
    	}
     
    	SOCKADDR_IN csin = { 0 };
    	SOCKET csock;
     
    	int sinsize = sizeof csin;
     
    	csock = accept(sock, (SOCKADDR *)&csin, &sinsize);
     
    	if(csock == INVALID_SOCKET)
    	{
    	    perror("accept()");
    	    exit(errno);
    	}
     
    	closesocket(sock);
    	closesocket(csock);
    }
    Merci pour votre aide!

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 599
    Points
    23 599
    Par défaut
    Bonsoir,

    Citation Envoyé par dergeekpanda Voir le message
    la compilation se déroule sans problème mais le programme ne renvoi rien du tout.
    Qu'est-il censé renvoyer, déjà ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	sin.sin_family = AF_LOCAL;
    Si tu essaies d'écouter un port IP (le 80) et que tu utilises des sockaddr_in, pourquoi utilises-tu la famille d'adresse « AF_LOCAL » ? Elle sert à allouer des sockets UNIX, locaux à ta machine et qui utilisent le système de fichier comme espace d'adressage.

    Essaie AF_INET à la place, aux lignes 25 et 36.

    Ensuite, souviens-toi qu'il te faut être root pour ouvrir un port en dessous de 1024 (dont le 80 fait partie) ou, à tout le moins, disposer de la prérogative CAP_NET_BIND_SERVICE.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 71
    Points : 38
    Points
    38
    Par défaut
    Je ne sais plus pourquoi j'avais changé le AF_INET en AF_LOCAL.

    Le programme était cencé renvoyer un "coucou" mais il n'y avait rien. Étrangement, maintenant il l'affiche...

    Merci à toi le serveur à l'air de fonctionner.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 599
    Points
    23 599
    Par défaut
    Citation Envoyé par dergeekpanda Voir le message
    Merci à toi le serveur à l'air de fonctionner.
    À ton service mais n'oublie pas en bas de page…

Discussions similaires

  1. [Sage X3 V5] Serveur batch inactif
    Par leloup84 dans le forum SAGE
    Réponses: 5
    Dernier message: 22/05/2012, 12h59
  2. Crash Total serveur Linux
    Par jc_isd dans le forum Administration système
    Réponses: 4
    Dernier message: 14/12/2007, 12h57
  3. couper une connection avec un serveur corba
    Par pons dans le forum CORBA
    Réponses: 3
    Dernier message: 31/05/2002, 11h11
  4. [Kylix] IP d'un serveur;....
    Par yopziggy dans le forum EDI
    Réponses: 16
    Dernier message: 24/05/2002, 10h01

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