Probleme de communication entre deux programme

Signaler
Messages postés
10
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 mai 2008
-
Messages postés
10
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 mai 2008
-
re salut le dernier message que j ai poster c etait pour les socket et la librairie "libwsock.a" mais sayer j ai passer cette etape j ai reussi a faire un serveur qui envoie"hello word" a un client maintenan j aimerai bien pouvoir repondre a partir du client
le code clien est:
*******************


#include <cstdlib>
#include
#include <winsock2.h>
#include<string.h>
using namespace std;

main(int argc, char *argv[])
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char buffer[255],t[255];
sin.sin_addr.s_addr = inet_addr("192.168.2.2");
sin.sin_family = AF_INET;
sin.sin_port = htons(4148);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
recv(sock, buffer, 254, 0);
printf("%s\n",buffer);
printf("\n\nsaisir la phrase a envoyer\n");
scanf("%s",t); \\ici on rentre la variable a renvoyer o serveur
send(sock, t, 256, 0); \\on envoie
closesocket(sock);
WSACleanup();
system("PAUSE");
return EXIT_SUCCESS;
}


et voici le code du serveur
************************

#include <cstdlib>
#include
#include <winsock2.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

main(int argc, char *argv[])
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
SOCKET csock;
char buffer[255],t[255];
sin.sin_addr.s_addr = htonl(INADDR_ANY);

sin.sin_family = AF_INET;
sin.sin_port = htons(4148);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));

listen(sock, 2);

int sinsize = sizeof(csin);
system("pause");
while(1)
{
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
send(csock, "Hello world!\r\n", 14, 0);
printf("evoie reussi");
}
recv(sock,buffer,strlen(buffer),MSG_PEEK); \\censer recevoir \ \les info envoyer par le \ \client
printf("message : %s\n",buffer);
}

system("PAUSE");
return EXIT_SUCCESS;
}



en fait le probleme que je rencontre est que mon serveur m affiche des caractere bidon a la place de menvoyer le string du client



merci pour vaut reponse

4 réponses

Messages postés
10
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 mai 2008

ne faite po attention a la boucle whiel ds le serveur j ai oublier de l enlever
faite comme si elle n y etai po
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

pour le client tu fais pareil :
send();
voila et sur ton server recv
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

while(!buf)
{
recv dans buf
}

printf("sa yest buf = %s",buf);
Messages postés
10
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 mai 2008

sayer j ai fait mon client et mon serveur comme tu me la dit
je ne recoit plus les caractere bidon (c etait que char buffer n etait po vierge)
mais le nouveau problem est que le serveur attend ce qu il doi attendre sans jamais le recevoir

ma boucle de reception du serveur est

while(buffer[0]=='\0')
{


recv(sock, buffer, 254, 0);
}


printf("sa yest buffer = %s",buffer);

je me demande ossi si il n ya pas une histoir comme une variable string qui serai codé en paqué de 2 caractere
merci pour vo reponse