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

dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 12 juin 2004 à 20:54
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005 - 13 juin 2004 à 20:37
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

cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
13 juin 2004 à 00:03
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
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
13 juin 2004 à 16:29
merci!
on peut donc cpier une chaine caracteres dans:

sin.sin_addr.s_addr = inet_addr(ip)

ip ettant une chaine de caractere?
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
13 juin 2004 à 17:03
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
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
13 juin 2004 à 19:34
euh...desolé mais en fait c'est bon ca marche!
merci! pour ces bons conseils
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
13 juin 2004 à 20:37
alors, tant mieux !

a+
alain
0
Rejoignez-nous