Socket problème d'envoi message

Fermé
raikko01 Messages postés 2 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 7 novembre 2009 - 7 nov. 2009 à 13:21
Bonjour,
Serait-il possible de bénéficier de votre aide. J'ai effectué un petit programme entre en serveur et un client, mais la communication ne fonctionne que dans un sens. je vous donne mon code source.

******code serveur*****
#include <sys/types.h>
#include <sys/socket.h>


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <unistd.h>
#include <fcntl.h>
#include <arpa/inet.h>
#include <netinet/in.h>


#define NBMAX_CLIENT 5



int main(){

//pour le serveur
int sock,sock1,port=6000, comb=0, nb_client=0;
struct sockaddr_in ser;

//pour les clients
int sockclient[NBMAX_CLIENT];
struct sockaddr_in from;
socklen_t fromlen;

//Gestion de données
char buffer[255];
//socklen_t taillezoneadresse=sizeof(struct sockaddr_in);



//Création du socket
sock=socket(AF_INET,SOCK_DGRAM,0);

if (sock==-1){
perror("Erreur Socket");
exit(-1);
}

ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htonl(INADDR_ANY);

/*mode non bloquant ( pour accept() )*/
//comb=fcntl(sock,F_GETFL);
//fcntl(sock,F_SETFL,comb | O_NONBLOCK);

if(bind(sock,(struct sockaddr*)&ser,sizeof (ser))==-1){
perror("erreur d'adressage");
exit(-1);
}

while(1){

char mes[20]="bbbbbb";
recvfrom(sock,buffer,255,0,(struct sockaddr *)&from, &fromlen);
printf("Reception de %s via le port %d : %s\n",inet_ntoa(from.sin_addr),ntohs(from.sin_port),buffer);
sendto(sock,mes,20,0,(struct sockaddr*)&from,sizeof (fromlen));

}


return EXIT_SUCCESS;
}



******code client******
#include <sys/types.h>
#include <sys/socket.h>


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <unistd.h>
#include <fcntl.h>
#include <arpa/inet.h>
#include <netinet/in.h>


int main (){

int sock;int port=6000;
sock=socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in caddr;
caddr.sin_family=AF_INET;
caddr.sin_port=htons(port);
caddr.sin_addr.s_addr=inet_addr("127.0.0.1");

char *message=(char*)malloc(sizeof(char)*255) ;
gets(message);
char *reponse=(char*)malloc(sizeof(char)*255) ;
struct sockaddr_in qui;
socklen_t quilen;
sendto(sock,message,strlen(message),0,(struct sockaddr*)&caddr,sizeof caddr);
sleep(5);
recvfrom(sock,reponse,strlen(reponse),0,(struct sockaddr*) &qui, &quilen);
printf("Reponse de %s dont le socket est %d : %s\n",inet_ntoa(qui.sin_addr),ntohs(qui.sin_port),reponse);

return EXIT_SUCCESS;
}