Sockets!!!!!!!!!!!!!!!

Signaler
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005
-
bonjour,

J'ai encore un probleme avec les sockets:

voila, g reussi a faire communiquer un serveur et un client su r 2 ordinateur distant mais cette connection ne marche que dans dans un sens (logique): client----->seveur

Comment faire poue que le seveur puisse envoyer des messages au client? Faut il refaire:
_un bind
_un listen
_un acceptsocket

du coté client, sur un autre port??

ou alors existe il une fonction "send" qui permet d'envoyer des données en selectionnant un ip? (le serveur connaissat l'ip du client)

derniere question:comment fait on our parametrer son ip avant une connction avec les sockets?
Par exemple le programme demande : "quel est votre ip?".
ensuite il l'enregistre dans une chaine puis faudrait la copier dans:
service.sin_addr.s_addr = inet_addr( "ip" );
comment fait on?
Merci!!!

5 réponses

Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

salut,

Si je ne me trompe pas, tu peux bien faire un send à partir du serveur vers le socket du client. à partir du moment où le accept est passé, tu peux converser dans les 2 sens.

à mon avis, il est d'ailleurs recommandé de ne jamais envoyer deux messages successifs dans le même sens.

tu fais un send dans la socket connectée à la socket distante, qui doit être en attente.

pour la deuxième question :

une fois que tu as l'ip du serveur dans la chaine de caractères, tu remplis ta SOCKADDR_IN sin (par ex) :

sin.sin_addr.s_addr = inet_addr(ip)

pour le no de port, c'est (si port est le no du port en int) :

sin.sin_port = htons(port)

le serveur doit être en attente sur le no de port indiqué. une fois la connexion établie, tu peux alors envoyer des messages dans un sens ou dans l'autre.

Tu devrais regarder dans les sources. je suis sûr qu'il y a de nombreux exemples traitant de ce sujet.

a+
alain
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
merci!
on peut donc cpier une chaine caracteres dans:

sin.sin_addr.s_addr = inet_addr(ip)

ip ettant une chaine de caractere?
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
euh non ya un probleme!

je viens de faire des test la dessus:

le client se connecte au serveur
puis il peut envoyer autant de message qu'il le souhaite
ensuite le serveur envoie un message
le client le recoit bien (il peut meme en recevoir plein du serveur...)
mais ensuite le client a beau envoyer des messages au serveur celui ci ne recoient plus jamais!
la communication ne marche plus que dans le sens serveur---->client!

pourquoi?
merci de votre aide
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
euh...desolé mais en fait c'est bon ca marche!
merci! pour ces bons conseils
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

alors, tant mieux !

a+
alain