Envoie message client/serveur C, sockets TCP
Fermé
yodlay
Messages postés
1
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
17 avril 2007
-
17 avril 2007 à 17:20
asma - 20 juin 2010 à 16:05
asma - 20 juin 2010 à 16:05
A voir également:
- Envoie message client/serveur C, sockets TCP
- Message - Guide
- Udp vs tcp - Guide
- Recuperer message whatsapp supprimé - Guide
- Message d'absence thunderbird - Guide
- Tcp optimizer - Télécharger - Optimisation
4 réponses
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
17 avril 2007 à 17:29
17 avril 2007 à 17:29
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
haduss
Messages postés
239
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2013
43
26 avril 2010 à 22:47
26 avril 2010 à 22:47
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.
16 mars 2008 à 12:25
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
26 oct. 2008 à 02:42