Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon serveur en C sur le net

    11 avril 2006 à 16:32:25

    Voila je n'arrive pas a mettre mon serveur a la disposition du net. J'utilise une AliceBox ou j'ai fait les redirections nécessaires.
    Voici le code :
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <winsock2.h>
    #define AEXIT 1
    #pragma comment(lib, "ws2_32.lib")
    int ComparerChaine(char *chaine1, char *chaine2)
    {
            int i = 0;
            while (chaine1[i] != '\0' && chaine2[i] != '\0')
            {
                    if (chaine1[i] != chaine2[i])
                    {
                            return 0;
                    }
                    i++;
            }
            return 1;
    }
    int AttribuerCommande(char *Chaine)
    {
            if (ComparerChaine(Chaine, "exit"))
            {
                    return AEXIT;
            }
            else
            {
                    return 0;
            }
    }
    int RecupererChaine(SOCKET csock, char *ChaineRecue)
    {
            char DonneeRecue[] = "1";
            int i = 0;
            while(DonneeRecue[0] != '\n')
            {
                    recv(csock, DonneeRecue, 1, 0);
                    if (DonneeRecue[0] != 8)
                    {
                            ChaineRecue[i] = DonneeRecue[0];
                            i++;
                    }
            }
            ChaineRecue[i-1] = '\0';
            return 0;
    }
    int main()
    {
            int Commande, Quitter = 0;
            char Chaine[100];
            char Login[100];
            char VraiLogin[] = "Haveo";
            char Password[100];
            char VraiPassword[] = "xxxxxxx";
            WSADATA WSAData;
            WSAStartup(MAKEWORD(2,0), &WSAData);
            SOCKET sock;
            SOCKET csock;
            SOCKADDR_IN sin;
            SOCKADDR_IN csin;
            sock = socket(AF_INET, SOCK_STREAM, 0);
            sin.sin_addr.s_addr               = INADDR_ANY;
            sin.sin_family        = AF_INET;
            sin.sin_port                = htons(1234);
            bind(sock, (SOCKADDR *)&sin, sizeof(sin));
            listen(sock, 0);
            while(1)
            {
                    int sinsize = sizeof(csin);
                    if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
                    {
            //Comportement en cas de connection
           
                            send(csock, "Bienvenue sur le serveur personnel de M4-3R !\r\n", strlen("Bienvenue sur le serveur personnel de M4-3R !\r\n"), 0);
                            send(csock, "Login :\r\n", 9, 0);
                            RecupererChaine(csock, Login);
                            send(csock, "Password :\r\n", 12, 0);
                            RecupererChaine(csock, Password);
                            if (ComparerChaine(Password, VraiPassword) && ComparerChaine(Login, VraiLogin))
                            {
                                    printf("Le maitre est passe.\n\n");
                            }
                            else
                            {
                                    printf("Un imposteur est passe : \n");
                                    printf("Login : %s\nPassword : %s\n\n", Login, Password);
                            }
                            send(csock, "\r\n", 2, 0);
                            while (Quitter == 0)
                            {
                                    RecupererChaine(csock, Chaine);
                                    Commande = AttribuerCommande(Chaine);
                                    if (Commande == AEXIT)
                                    {
                                            Quitter = 1;
                                    }
                            }
                            Quitter = 0;
                            send(csock, "A bientot !", 11, 0);
                            closesocket(csock);

            //Fin du Comportement en cas de connection
                    }
            }
            return 0;
    }

    Le serveur marche tres bien en local avec l'adresse 127.0.0.1 mais dès que je prends l'adresse 83.xxx.xxx.xxx ca ne marche plus !
    • Partager sur Facebook
    • Partager sur Twitter

    Mon serveur en C sur le net

    × 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