Envoie message client/serveur C, sockets TCP
yodlay
Messages postés
1
Statut
Membre
-
asma -
asma -
Bonjour j'aurais aimé avoir quelques renseignements sur les sockets . Je dois envoyer lors de la connexion d'un client un message a ce client mais je ne comprend pas vraiment comment on récupère les adresses du client et du serveur.
Comment intégrons nous dans la structure SOCKADRR_in l'adresse du client (cote serveur) et l'adresse du serveur pour la partie client
De ce fait mon programme qui permet de se connecter a mon serveur fait défaut lorsque j'utilise la socket "connect".
/*===============Voici le code============*/
s_in.sin_family= AF_INET;
s_in.sin_port= PORT;
s_in.sin_addr.s_addr= inet_addr(adresse)
/* adresse est par défaut 127.0.0.1*/;
if(connect(n,(struct sockadrr *)&s_in, sizeof(s_in)==-1))
{
printf("Erreur de connexion au serveur \n");
system("pause");
return EXIT_FAILURE;
}
/*==================================*/
Merci bcp par avance !!!
Comment intégrons nous dans la structure SOCKADRR_in l'adresse du client (cote serveur) et l'adresse du serveur pour la partie client
De ce fait mon programme qui permet de se connecter a mon serveur fait défaut lorsque j'utilise la socket "connect".
/*===============Voici le code============*/
s_in.sin_family= AF_INET;
s_in.sin_port= PORT;
s_in.sin_addr.s_addr= inet_addr(adresse)
/* adresse est par défaut 127.0.0.1*/;
if(connect(n,(struct sockadrr *)&s_in, sizeof(s_in)==-1))
{
printf("Erreur de connexion au serveur \n");
system("pause");
return EXIT_FAILURE;
}
/*==================================*/
Merci bcp par avance !!!
A voir également:
- Envoie message client/serveur C, sockets TCP
- Tcp udp - Guide
- Recuperer message whatsapp supprimé - Guide
- Tcp optimizer - Télécharger - Optimisation
- Changer serveur dns - Guide
- Message absence thunderbird - Guide
4 réponses
Salut,
Ton serveur doit faire
un bind
un listen
Puis se mettre en attente d'une connexion (en TCP) avec
un accept
Une fois cela fait, lorsque le client lance le connect, ton serveur va accepter la connexion (et choper les sockets), il donnera un nouveau numéro de socket pour gérer la communication (send/recv)
Bon courage
Ton serveur doit faire
un bind
un listen
Puis se mettre en attente d'une connexion (en TCP) avec
un accept
Une fois cela fait, lorsque le client lance le connect, ton serveur va accepter la connexion (et choper les sockets), il donnera un nouveau numéro de socket pour gérer la communication (send/recv)
Bon courage
bonjour,
voici une partie d'un programme qui accepte une connexion d'un client ...
int main ()
{
int dfs_serveur, dfs_client;
int long_adr_serveur,long_adr_client;
struct sockaddr_in adresse_serveur;
struct sockaddr_in adresse_client;
char buf[MAX_SIZE];
/* Création du socket */
dfs_serveur= socket (AF_INET, SOCK_STREAM, 0);
if (dfs_serveur ==-1)
{
perror("socket");
exit(1);
}
/* Initialisation de l'adresse du socket */
adresse_serveur.sin_family = AF_INET;
adresse_serveur.sin_addr.s_addr=("127.0.0.1");
adresse_serveur.sin_port=1234;
/* Association de l'adresse au socket*/
long_adr_serveur = sizeof (adresse_serveur);
if (bind
(dfs_serveur, (struct sockaddr *)&adresse_serveur,long_adr_serveur)==-1)
{
perror("bind");
exit(1);
}
/* Création d'une file d'attente de connexions pour les clients*/
listen (dfs_serveur,1);
while(1)
{
char ch;
printf("Attendre de connection\n");
/* Accepter les connection*/
long_adr_client = sizeof(adresse_client);
dfs_client = accept(dfs_serveur,(struct sockaddr *)&adresse_client,&long_adr_client);
/*lecture des données envoyées par le client*/
read (dfs_client,buf, MAX_SIZE);
printf("%s\n",buf);
close (dfs_client);
}
}
le programme écoute sur le port 1234 sur l'adresse 127.0.0.1 ...il contient aussi 2 erreur et un warning ... a toi de les trouvé, le plus gros est là...
@+++
voici une partie d'un programme qui accepte une connexion d'un client ...
int main ()
{
int dfs_serveur, dfs_client;
int long_adr_serveur,long_adr_client;
struct sockaddr_in adresse_serveur;
struct sockaddr_in adresse_client;
char buf[MAX_SIZE];
/* Création du socket */
dfs_serveur= socket (AF_INET, SOCK_STREAM, 0);
if (dfs_serveur ==-1)
{
perror("socket");
exit(1);
}
/* Initialisation de l'adresse du socket */
adresse_serveur.sin_family = AF_INET;
adresse_serveur.sin_addr.s_addr=("127.0.0.1");
adresse_serveur.sin_port=1234;
/* Association de l'adresse au socket*/
long_adr_serveur = sizeof (adresse_serveur);
if (bind
(dfs_serveur, (struct sockaddr *)&adresse_serveur,long_adr_serveur)==-1)
{
perror("bind");
exit(1);
}
/* Création d'une file d'attente de connexions pour les clients*/
listen (dfs_serveur,1);
while(1)
{
char ch;
printf("Attendre de connection\n");
/* Accepter les connection*/
long_adr_client = sizeof(adresse_client);
dfs_client = accept(dfs_serveur,(struct sockaddr *)&adresse_client,&long_adr_client);
/*lecture des données envoyées par le client*/
read (dfs_client,buf, MAX_SIZE);
printf("%s\n",buf);
close (dfs_client);
}
}
le programme écoute sur le port 1234 sur l'adresse 127.0.0.1 ...il contient aussi 2 erreur et un warning ... a toi de les trouvé, le plus gros est là...
@+++
Salut. Pour que le serveur puisse recevoir plusieurs clients, une solution est de créer un thread par client.
https://www.google.fr/search?hl=fr&q=pthread&btnG=Recherche+Google&meta=&gws_rd=ssl
https://www.google.fr/search?hl=fr&q=boost&btnG=Rechercher&meta=&gws_rd=ssl
https://www.google.fr/search?hl=fr&q=SDL_net&btnG=Rechercher&meta=&gws_rd=ssl
Dès qu'un client s'est connecté au serveur et que les deux sockets sont configurés, ton serveur crée un thread et repart ecouter un autre client.
https://www.google.fr/search?hl=fr&q=pthread&btnG=Recherche+Google&meta=&gws_rd=ssl
https://www.google.fr/search?hl=fr&q=boost&btnG=Rechercher&meta=&gws_rd=ssl
https://www.google.fr/search?hl=fr&q=SDL_net&btnG=Rechercher&meta=&gws_rd=ssl
Dès qu'un client s'est connecté au serveur et que les deux sockets sont configurés, ton serveur crée un thread et repart ecouter un autre client.
j'ai essayer a faire la meme chose, ca fonctionne par contre comment je dois faire pour avoir plusieurs client qui se connecte sur le serveur ?
Merci