DarkBoss
Messages postés154Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention12 décembre 2008
-
18 août 2004 à 14:42
titchouno
Messages postés10Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention27 janvier 2005
-
22 janv. 2005 à 22:14
Salut, moi j' ai un petit probleme de sockets,
en fet je veux que a chaque fois que un "espace" est recu,
il affiche ce qu' il a dans (char) cmd, ca marche bien pour la premiere fois, mais pourquoi apres la premiere fois cela n' affiche plus rien ?
voici mon code :
while (1) {
memset(&ClientSock, 0, ClientSockSize);
Client = accept(Server, (SOCKADDR*) &ClientSock, &ClientSockSize); // accepter la connection
printf("Client connecte...\n");
while(temp != ' ') { // tant qu' aucun espace n' est reçu
recv(Client, &temp, 1, 0); // on reçoi un caractere
strcpy(&cmd[i], &temp); // on met ce char dans cmd a la pos i
i++; // incrementation de i
}
printf("%s\n", cmd); // sinon on affiche cmd
strcpy(&temp, "."); // on copy "." dans temp(pour le while + haut)
i = 0; // on reset i
}
j' ai essayer plusieurs truc mais je n' y arrive pas ?
c' est surement une petite conneries mais bon kan on a le nez dans le code on voi pas !
merci d' avance !
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 18 août 2004 à 16:39
C pas bon du tt de recevoir un caractere par caractere, defini un buffer (de 256, 512...comme tu veux), tu recup ce ke tenvoie le client ds cette chaine, puis tu fais pointer un pointeur (char *) sur ce buffer, et tu parcours juska trouver un caractere d'espacement. Des ke tu la trouvé, tu le remplaces par un caractere de fin de chaine, puis tu fais un printf(). Et tu repars de la, tu recommences...Mais noublie pas de conserver ce ki suit les caracteres d'espacement pour reparcourir ensuite et ptet trouver un espace !