Chat client-serveur
Piven
Messages postés
90
Statut
Membre
-
Piven Messages postés 90 Statut Membre -
Piven Messages postés 90 Statut Membre -
Bonjour,
Je suis donné pour mission pour mission de faire un simple chat entre un client et un serveur; le chat doit prendre fin lorsque que le client émet un "exit". Seulement voila, quand je fait la vérification de la variable "message"... elle est TOUJOURS Différente de "exit" J'ai fait quelques tests et j'en devient fou... J'implore votre aide =/
Le CODE:
-----------------------------------------------------Serveur-------------------------------------------------------------------------------
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <errno.h>
#include <netdb.h>
int nom_client(int sock)
{
struct sockaddr_in client;
struct hostent* clt;
int lg=sizeof(client);
if(getpeername(sock,(struct sockaddr*)&client,&lg)<0)
return (-1);
lg=sizeof(client.sin_addr);
if((clt=gethostbyaddr((char*)&client.sin_addr,lg,AF_INET))==NULL)
return (-1);
printf("Le Client %s sur l'adresse %d est sur le socket n°%d\n",clt->h_name,inet_ntoa(client.sin_addr),ntohs(client.sin_port));
}
main()
{
char message[1024];
int sock,sock_clt,i;
struct sockaddr_in addr_serv;
sock = socket(AF_INET,SOCK_STREAM,0);
if (sock<0)
{
perror("Echec de création du socket \n");
return(-1);
}
addr_serv.sin_addr.s_addr=INADDR_ANY;
addr_serv.sin_port = htons(8000);
addr_serv.sin_family = AF_INET;
if(bind(sock,(struct sockaddr *)&addr_serv,sizeof(addr_serv))<0)
{
perror("Erreur d'association");
return(-1);
}
listen(sock,5);
sock_clt=accept(sock,(struct sockaddr *) 0, (int*)0);
if (sock_clt==-1)
{
perror("ERREUR ACCEPT ");
return(-1);
}
else
{
perror("Bravo: connexion établie.");
nom_client(sock_clt);
}
while(1){
if(read(sock_clt,message,1024)==-1)
perror("Problème de lecture de la socket.\n");
else
{
fprintf(stderr,"%s ",message);
if (message!="exit")
printf("%s \n",message);
fgets(message,1024,stdin);
if (write(sock_clt,message,strlen(message))==-1)
{
perror("il y a un probleme dans l'envoi du message\n");
return(-1);
}
memset(message,0,sizeof message);
}
}
close(sock_clt);
close(sock);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------client-------------------------------------------------------------------------------------
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <errno.h>
#include <netdb.h>
main()
{
int sock,i;
char message[1024], Serveur[20];
struct sockaddr_in adresse;
struct hostent *adresse_ip;
u_short port;
sock=socket(AF_INET,SOCK_STREAM,0);
if (sock < 0)
{
perror("Erreur d'ouverture");
return(-1);
}
scanf("%s",Serveur);
fprintf(stderr,"Nom Serveur :%s",Serveur);
adresse_ip=gethostbyname(Serveur);
if (adresse_ip==NULL)
{
perror("Problème avec l'adresse ip");
return(-1);
}
memcpy((char*)&adresse.sin_addr,(char*)adresse_ip->h_addr,adresse_ip->h_length);
adresse.sin_family=AF_INET;
adresse.sin_port=htons((u_short) 8000);
if (connect(sock, (struct sockaddr *)&adresse,sizeof(adresse))==-1)
{
perror("Problème de connexion");
return(-1);
}
for(;;)
{
fgets(message,1024,stdin);
if(write(sock,message,strlen(message)+1)==-1)
{
perror("Erreur d'emission ou d'écriture dans la socket");
return(-1);
}
if (message!="exit")
printf("%s\n",message);
memset(message,0,sizeof message);
if (read(sock,message,1024)==-1)
{
perror("Erreur de lecture");
return(-1);
}
else
fprintf(stderr,"%s", message);
}
close(sock);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Je suis donné pour mission pour mission de faire un simple chat entre un client et un serveur; le chat doit prendre fin lorsque que le client émet un "exit". Seulement voila, quand je fait la vérification de la variable "message"... elle est TOUJOURS Différente de "exit" J'ai fait quelques tests et j'en devient fou... J'implore votre aide =/
Le CODE:
-----------------------------------------------------Serveur-------------------------------------------------------------------------------
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <errno.h>
#include <netdb.h>
int nom_client(int sock)
{
struct sockaddr_in client;
struct hostent* clt;
int lg=sizeof(client);
if(getpeername(sock,(struct sockaddr*)&client,&lg)<0)
return (-1);
lg=sizeof(client.sin_addr);
if((clt=gethostbyaddr((char*)&client.sin_addr,lg,AF_INET))==NULL)
return (-1);
printf("Le Client %s sur l'adresse %d est sur le socket n°%d\n",clt->h_name,inet_ntoa(client.sin_addr),ntohs(client.sin_port));
}
main()
{
char message[1024];
int sock,sock_clt,i;
struct sockaddr_in addr_serv;
sock = socket(AF_INET,SOCK_STREAM,0);
if (sock<0)
{
perror("Echec de création du socket \n");
return(-1);
}
addr_serv.sin_addr.s_addr=INADDR_ANY;
addr_serv.sin_port = htons(8000);
addr_serv.sin_family = AF_INET;
if(bind(sock,(struct sockaddr *)&addr_serv,sizeof(addr_serv))<0)
{
perror("Erreur d'association");
return(-1);
}
listen(sock,5);
sock_clt=accept(sock,(struct sockaddr *) 0, (int*)0);
if (sock_clt==-1)
{
perror("ERREUR ACCEPT ");
return(-1);
}
else
{
perror("Bravo: connexion établie.");
nom_client(sock_clt);
}
while(1){
if(read(sock_clt,message,1024)==-1)
perror("Problème de lecture de la socket.\n");
else
{
fprintf(stderr,"%s ",message);
if (message!="exit")
printf("%s \n",message);
fgets(message,1024,stdin);
if (write(sock_clt,message,strlen(message))==-1)
{
perror("il y a un probleme dans l'envoi du message\n");
return(-1);
}
memset(message,0,sizeof message);
}
}
close(sock_clt);
close(sock);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------client-------------------------------------------------------------------------------------
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <errno.h>
#include <netdb.h>
main()
{
int sock,i;
char message[1024], Serveur[20];
struct sockaddr_in adresse;
struct hostent *adresse_ip;
u_short port;
sock=socket(AF_INET,SOCK_STREAM,0);
if (sock < 0)
{
perror("Erreur d'ouverture");
return(-1);
}
scanf("%s",Serveur);
fprintf(stderr,"Nom Serveur :%s",Serveur);
adresse_ip=gethostbyname(Serveur);
if (adresse_ip==NULL)
{
perror("Problème avec l'adresse ip");
return(-1);
}
memcpy((char*)&adresse.sin_addr,(char*)adresse_ip->h_addr,adresse_ip->h_length);
adresse.sin_family=AF_INET;
adresse.sin_port=htons((u_short) 8000);
if (connect(sock, (struct sockaddr *)&adresse,sizeof(adresse))==-1)
{
perror("Problème de connexion");
return(-1);
}
for(;;)
{
fgets(message,1024,stdin);
if(write(sock,message,strlen(message)+1)==-1)
{
perror("Erreur d'emission ou d'écriture dans la socket");
return(-1);
}
if (message!="exit")
printf("%s\n",message);
memset(message,0,sizeof message);
if (read(sock,message,1024)==-1)
{
perror("Erreur de lecture");
return(-1);
}
else
fprintf(stderr,"%s", message);
}
close(sock);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
A voir également:
- Chat client-serveur
- Coco chat - Accueil - Réseaux sociaux
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Chat coco débloquer ✓ - Forum Réseaux sociaux
- Chat engine - Télécharger - Outils Internet
- Nouveau site coco chat - Forum Réseaux sociaux
5 réponses
Salut tu essayes surment de faire un jeu comme http://calvania.jexiste.fr ??
car ancienement ce tchat était vraiment super connu sous le lien http://www.calvania.org
Buzz12 et Hecate sont les fondateurs de ce beau tchat qui se télécharge, en ce moment ils sont entrain de tout refaire sur le lien http://calvania.jexiste.fr
car ancienement ce tchat était vraiment super connu sous le lien http://www.calvania.org
Buzz12 et Hecate sont les fondateurs de ce beau tchat qui se télécharge, en ce moment ils sont entrain de tout refaire sur le lien http://calvania.jexiste.fr
Non non le mien s'execute sur Console de 2 machines différentes sur le même réseau. Rien de plus ...
if (message!="exit")
printf("%s\n",message);
C'était pour bien vérifier que quand je tape exit... Y'a bien exit dans message....
printf("%s\n",message);
C'était pour bien vérifier que quand je tape exit... Y'a bien exit dans message....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question