Socket serveur

Signaler
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
29 avril 2007
-
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
29 avril 2007
-
j'utilise actuellement des sockets dans mon projet informatique .je cree actuellement un serveur afin de recevoir des caractères dans un SetdlgitemText(j'utilise un mfc) .mais j'ai des problemes lorsque je lance mon programme .je lance d'abord le serveur et ensuite le client  mais dès que je le lance il s'arrete subitement .je me demande si mon probleme ne vient pas de mon serveur et je voudrai avoir de l'aide pour regler ce souci merci .

2 réponses

Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Salut,

Quel type de sockets utilises tu? ASynchrone, synchrone ?

As tu récréer une classe hérité de la classe CASynchsock ?

As tu éssayé de débugger afin d'intercepter le type d'erreur ( avec nErrorCode notamment) ?

Sois plus précis, et donne du code !
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
29 avril 2007

Franchement je ne sais si je dois utiliser des sockets asynchrones ou synchrones.je n'ai pas crée une classe hérité.j'ai mon code si vous vouez m'aider .je l'ai codé en une seule fonction .de plus je suis un débutant dans les sockets .voici le code qui provient d'un programme mfc .

void CserveurtcpDlg::Recevoir(void)
{
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);//MAKEWORD dit qu'on utilise la version 2 de winsock

    SOCKET server;//Le socket qui servira à écouter sur un port
    SOCKET sock;//le socket qui servira à communiquer

    SOCKADDR_IN sinserv;    //parametres pour server
    SOCKADDR_IN sin;        //parametres pour sock

    //printf("TCP connection maker par vbnul\n\n");
    //estimez vous heureux que je foute pas de copyright ;)

    //system("TITLE TCP Connection Maker (Version server)");
    //fo avouer que c'est plus joli

    int port= 8888;

    //printf("Port : ");//On demande juste le port, pas besoin d'ip on est sur un server
    //scanf("%i",&port);

    sinserv.sin_family=AF_INET;    //Je ne connais pas d'autres familles
    sinserv.sin_addr.s_addr=INADDR_ANY;//Pas besoin d'ip pour le server
    sinserv.sin_port=htons(port);

    server=socket(AF_INET,SOCK_STREAM,0);//On construit le server
    //SOCK_STREAM pour le TCP
    bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
    //On lie les parametres du socket avec le socket lui meme

    listen(server,0);//On se met à écouter avec server, 0 pour n'accepter qu'une seule connection

    char buffer[50]="";//Pour stocker les messages
    int sinsize;//contiendrz la taille de sin
    int err=0;//pour détecter si la connection est toujours valide

    while(1)
    {
        sinsize=sizeof(sin);
        if((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET)
        {//accept : accepte n'importe quelle connection
            //Si le socket et valide(si qqn a bien demandé une connection) alors on y va :
       
            while(err>-1)
            {
                memset(buffer,0,sizeof(buffer));//Ici, c'est la procédure pour envoyer
                //err=scanf("%s",buffer);
                send(sock,buffer,sizeof(buffer),0);

                memset(buffer,0,sizeof(buffer));//Et la, celle pour recevoir
                recv(sock,buffer,sizeof(buffer),0);
                SetDlgItemText(IDC_EDIT1,buffer);
                ///printf("%s\n",buffer);
            }
        }
        else

        {

            MessageBox("Erreur");

        }
    }
   
    WSACleanup();

}

je ne sais qu'il faut faire pour que le serveur reçoive les caractères.j'espere que j'obtiendrai de l'aide .merci bcp