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
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 !!!
A voir également:

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
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
2
bonjour

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
0
police > cyberdam
26 oct. 2008 à 02:42
c koi ton server en
0
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
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à...
@+++
2
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.
1
programmecliet serveur en c++
0

Discussions similaires