Partage
  • Partager sur Facebook
  • Partager sur Twitter

Socket: le serveur n'écoute pas sur le bon port !

et je ne vois pas pourquoi :(

    23 juillet 2006 à 14:43:58

    Salut tout le monde,
    je commence à programmer un peu pour moi et j'avoue que le thème des sockets n'est pas si facile que ça :/.

    Bref, voilà mon programme:


    #include <string.h>
    #include <stdio.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <unistd.h>
    #include <stdlib.h>

    #define PORT 66666
    #define BACKLOG 10
    int main(int argc, char ** argv){

         int server_sockfd, client_sockfd;
         int server_len, client_len;
         struct sockaddr_in server_address;
         struct sockaddr_in client_address;

         if(argc!=2){
              printf("\nUsage: ./server1 <port>\n");
              exit(1);
         }
         server_sockfd = socket(AF_INET, SOCK_STREAM,0);
         bzero(&server_address, sizeof(server_address));

         server_address.sin_family    = AF_INET;
         server_address.sin_addr.s_addr     = INADDR_ANY;
         server_address.sin_port       = htons(atoi(argv[1]));
         
         bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

         if((listen(server_sockfd,(int) BACKLOG))== -1){
              perror("listen: ");
              exit(1);
         }
         printf("\nListening on port %d\n\n", ntohs(server_address.sin_port));

         int n;
         char buf[256];
         while(1){
              printf("The server is waiting for a connexion... \n\n");
              client_len=sizeof(client_address);
              if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address, &client_len)) ==-1){
                   perror("connection: ");
                   exit(1);
              }
              while((n = read(client_sockfd, &buf,250))>0)
                   printf("You've written: %s\n\n", buf);
              close (client_sockfd);
         }


         return 0;

    }


    Donc d'abord, je précisait directement le port (6666 en premier temps), ensuite, je me suis dit que c'était mieux en paramètre directement. Bref, mon souci maintenant, c'est que quand j'essaie de lancer mon petit serveur, par exemple:

    Citation : lancement

    ./serveur1 1234



    J'obtiens le port suivant ouvert:

    Citation : netstat

    netstat -tpl
    (Not all processes could be identified, non-owned process info
    will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 *:36862 *:* LISTEN 14880/serveur1



    J'ai cherché de fond en comble à savoir pourquoi ça me faisait ça, mais je n'ai pas trouvé :(...

    merci beaucoup pour votre aide...

    EDIT: j'ai trouvé, en fait il s'agissait de la variable server_len = sizeof(client_address) que j'avais oublié de faire :P...
    • Partager sur Facebook
    • Partager sur Twitter
      23 juillet 2006 à 20:34:49

      <citation nom="bubute">
      Bref, voilà mon programme:
      #define PORT 66666

      Pas possible. La valeur max d'un port est 65535.
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !

      Socket: le serveur n'écoute pas sur le bon port !

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown