Problèmes serveur

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 12 déc. 2006 à 19:05
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 14 déc. 2006 à 19:18
Bonjour à tous,

Voila je me met à la programmation réseaux et j'ai commencé par une simple appli console client-serveur. Mon serveur est censé recevoir des messages du client et les afficher , seulement voila : Il ne le fait pas, la connection se passe très bien , tout est testé et cela fonctionne. Le problème est que recv est censé attendre après une reception de donnée, mais sur mon serveur juste après la connection du client, l'instruction recv s'éxécute alors que je n'ai mm pas eu le temps d'envoyé un message avec mon client :s . Et évidement cela plante.

Si quelqu'un pouvait m'aider , je join à ce post le code de mon serveur :

#include <stdio.h>
#include <winsock2.h>


int main(void){
    char szMsg[600+1]="";
    struct sockaddr_in saiServerSock = {0};
    struct sockaddr_in saiClientSock = {0};
    int iServerSockID;
    int iClientSockID;
    int iSizeSockClient;
    int iRecvData;
    WSADATA wsaData;
   
    WSAStartup(MAKEWORD(2,0),&wsaData);
   
    iServerSockID = socket(AF_INET,SOCK_STREAM,0);
   
    if(iServerSockID == -1)
    {
        printf("\n<error> Function : socket()");
        fflush(stdin);
        scanf("%*c");
        WSACleanup();
        return 1;
    }
   
    saiServerSock.sin_family = AF_INET;
    saiServerSock.sin_port = htons(2000);
    saiServerSock.sin_addr.s_addr = INADDR_ANY;
   
    /* mise sur écoute du port. */
    bind(iServerSockID,(struct sockaddr*)&saiServerSock,sizeof(saiServerSock)); /* Lie le socket à un port. */
   
    listen(iServerSockID,2); /* 2 : Nombre d'écoute possible du serveur. */
   
    iSizeSockClient = sizeof(saiClientSock);
   
    if(iClientSockID = accept(iServerSockID,(struct sockaddr*)&saiClientSock,&iSizeSockClient) != INVALID_SOCKET){
    printf("\n::::: Client connected");
   
    short sContinue = 1;
   
    while(sContinue)
    {
           
            iRecvData = recv(iClientSockID,szMsg,sizeof(szMsg)-1,0);
            if(iRecvData == SOCKET_ERROR){
                printf("\n <error> function : recv()");
                sContinue=0;
            }else{
                szMsg[iRecvData] = 0;
                printf("\n Message : %s",szMsg);
            }
    }
    }
   
    closesocket(iServerSockID);
    WSACleanup();
}

J'espère vraiment que quelqu'un sait le pourquoi de ceci.
Merci d'avance.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]

19 réponses

Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
12 déc. 2006 à 23:34
Salut,

Désolé, chui crevé, cependant jpeu te filer quelques liens qui pourront peut-être t'aider a trouver ton probléme :

ici et la et pr finir, celui ci qui devrait être le mieu pr ton pb (ya des exemples serv / client) ^_-
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
13 déc. 2006 à 18:14
Merci pour ton aide, mais j'avai déjà ces liens, j'ai mm dl une source de cppfrance et franchement je ne voi absolument pas ce qui cloche :s

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 déc. 2006 à 18:38
Salut deck_bsd,

moi d'habitude au lieu de WSAStartup(MAKEWORD(2,0),&wsaData); je mets WSAStartup(MAKEWORD(2,2),&wsaData);
Je pense pas que ça va résoudre ton problème mais sait on jamais !
Ca ne coûte rien d'essayer.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 déc. 2006 à 23:42
salut,

si recv renvoie SOCKET_ERROR, qu'est ce que te renvoie WSAGetLastError...

ShareVB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 15:00
Héhé, salut yoyo , ben figure toi que avant j'avai 2,2 et j'ai essyer 2,0 pour voir, mais cela ne change rien mdr . Mais bon je me suis dit que vu que le code est pas très long, j'ai tout recoder, et cela fonctionne :s pourtant je ne voi absolument pas ce que j'ai fait de plus . Enfin bref now cela fonctionne.

Merci shareVB pour ton aide, mais j'ai pas eu le temps de voir mdr

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 15:11
lol. Tu veux dire qu'au bout du compte tu as exactement le même code ? Si oui, il y en a un qui fonctionne et pas l'autre ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 16:15
A peu de chose près, j'ai juste remplacer les int par des SOCKET :s mais sinon, les verif sont les mm , la boucle est la mm :s

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 16:40
lol ! C'est quand même pas si peu que ça ! Et je l'avais même pas vu en plus.
Au moins maintenant je sais les effets que ça a de remplacer des SOCKET par des int ! (note pour plus tard )

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 déc. 2006 à 16:44
salut,

SOCKET : unsigned int * mais bon ca devrait pas gêner à ce point...il se peut qu'il y ait des problème de signe entre un pointeur et un int...

ShareVB
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 17:14
Je pense aussi que ce n'est pas mes int, qui fesait tout foirer, mais c'est-on jamais car ce n'était pas des pointeur donc ...

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 17:14
Je pense aussi que ce n'est pas mes int, qui fesait tout foirer, mais c'est-on jamais car ce n'était pas des pointeur donc ...

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 17:33
Oui et le meilleur moyen de le savoir c'est que tu testes en remplaçant SOCKET par int dans ton code qui marche.
Mais bon ya quand même une bonne différence entre int et unsigned int*, donc pas vraiment étonnant que ça ne marche pas ;)

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 17:48
ha ben suis-je bete, non les int sont pour rien car ds mon client c'était des int et il fonctionne nickel :s .

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 18:15
Et bien, c'est une énigme de l'informatique ton programme on dirait !
Moi en tous cas j'abandonne parce que là je ne vois vraiment pas de quoi ça peut venir.
Si ça se trouve c'est tout bête mais je vois pas.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 18:22
A propos, je voudrai bien porter ce code en graphique, bon tout devrai aller apart une chose, pour l'affichage des messages, je pensai le faire dans une listbox mais voila, si le message fait plus d'une ligne ce sera pas très pratique et j'ai pas envie de le découper lol, et une zone de texte simple ma fois il faudrait sauver ce qu'il y a avant l'envoie puis le remettre avec le nouveau message, mais j'ai peur de la lenteur, vois-tu une autre possibilité ?

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 19:05
A mon humble avis je crois que tu n'as pas le choix. Par contre avec un RichEdit, tu peux ajouter le texte sans avoir à récupérer tout le reste.
Tu en as un exemple dans ma source ESIP Messenger, c'est dans le fichier AjouteTexte.h.
La fonction te permet d'ajouter du texte à un richedit.
Si tu as des questions dessus je suis là !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 19:13
Ha je ne connaisait pas ce controle , merci pour ton aide, cet header va bien m'aider. Je ne pense pas pourvoir voir ça aujourd'hui (ben oui faut bien bosser pour la school :) ), mais j'espère pouvoir te contacter en cas de besoins ;) . Bien que ce soit pas vraiment dure d'ajouter du texte je voi, reste plus qu'a voir la création , vai fouiller tes .h sisi, tien ESIP , hola un ingénieur :p

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 déc. 2006 à 19:16
Oui c'est assez simple. Pour la création, vas dans "CreationObjet.h".
Bon courage pour ton boulot à faire.

PS: dis-moi pas que tu connais l'ESIP ! lol

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2006 à 19:18
De nom seulement, suis un ti Belge moi mdr

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
Rejoignez-nous