XKaliBur
Messages postés45Date d'inscriptionvendredi 20 février 2004StatutMembreDernière intervention13 février 2007
-
22 mai 2005 à 21:06
XKaliBur
Messages postés45Date d'inscriptionvendredi 20 février 2004StatutMembreDernière intervention13 février 2007
-
23 mai 2005 à 01:14
Je suis débutant et je voudrais faire en sorte d'envoyer un
message au mon serveur et des que ce dernier reçoit un message, il réponde en
fonction de se qui associé au message reçut : par exemple si j'envois au serveur
le message '!salut" il réponde par un "slt a toi".
Code du client :
#include <winsock2.h>
/*socket*/
#include <stdio.h>
/*printf*/
#include
#pragma comment(lib, "ws2_32.lib")
void main()
{
char ip[256];
std::cout << "IP : ";
std::cin >> ip;
std::cout << std::endl;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char buffer[BUFSIZ];
char msg[256];
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_family = AF_INET;
sin.sin_port = htons(4444);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
while(1) {
std::cout << "MSG : ";
std::cin >> msg;
sprintf(buffer, "%s\n", msg);
send(sock, buffer, sizeof(buffer), 0);
memset(buffer, '\0', BUFSIZ); /*on vide le buffer*/
Mon problème c'est que quand j'envoi un premier
"!salut" il me répond bien par "slt a toi" mais après ça ne
marche plus, j'ai le prompt "MSG : " sur le client qui s'affiche deux
fois et après plus rien, et pendant ce temps la sur le serveur il ne c'est afficher
qu'une seul fois"!salut".
XKaliBur
Messages postés45Date d'inscriptionvendredi 20 février 2004StatutMembreDernière intervention13 février 2007 23 mai 2005 à 01:14
Bon par manque d'envit de dormir j'ai finalement
reussit à trouver le problème : remplacer tout les "BUFSIZ" et
"BUFSIZE-1" par "sizeof(buffer)" et ça marche.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 22 mai 2005 à 23:15
Salut,
Pour que ton serveur puisse gerer plusieurs commandes, il faudrait faire une boucle while() juste apres le accept() et traiter les commandes recues dans cette boucle.