IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Socket : lecture et �criture simultan�e


Sujet :

C++

  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut Socket : lecture et �criture simultan�e
    Bonjour � tous,

    J'essaye de communiquer avec un serveur de fa�on totalement "libre" avec boost.Asio. C'est � dire, sur une m�me socket, �couter en continue de mani�re asynchrone des requ�tes qui pourrait arriver du serveur, et puis �crire n'importe quand sur demande de l'utilisateur (depuis une IHM en fait).
    Lorsque que je veux �crire sur la socket alors que je suis d�j� en train d'�couter, j'ai une erreur 10022 invalid_argument.

    Ce que je veux est impossible ?
    Faut-il utiliser 2 sockets sur le m�me port ? Ou bien 2 sockets avec deux ports diff�rents, un pour la lecture et un pour l'�criture ?


  2. #2
    jmv
    jmv est d�connect�
    Membre chevronn� Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    D�tails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par d�faut
    Salut,

    (Je ne connais pas boost.Asio, ma r�ponse risque donc d'�tre � c�t� de la plaque)

    Quel protocole utilise-tu ? TCP ou UDP ? ce que tu veux faire me semble difficile en TCP.
    As-tu essay� avec 2 sockets sur le m�me port ?

    j'ai une erreur 10022 invalid_argument.
    Peux-tu montrer le bout de code qui pose probl�me ? car vu le message d'erreur, j'ai l'impression qu'il y a un bug dans le code.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Je suis en train d'essayer 2 sockets sur le m�me port. Il faut recoder pas mal de trucs alors �a prend du temps.
    Mea culpa, j'a oubli� de pr�ciser, je suis en TCP.

    L'erreur invalid_argument est peut-�tre d� � un effet de bord de la s�rialisation de boost. J'utilise une version maison d'un exemple que j'avais trouv� dans la doc de Boost.Asio : tcp_connection. Le code de mon projet commence � devenir un peu lourd, et il m'est difficile de poster un code simple reproduisant l'erreur.

    Je teste avec deux sockets sur le m�me port, et je te dis !

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Si boost.Asio repose sur les sockets BSD (et je le pense), c'est du bidirectionnel.
    Cot� server, il faut bien prendre la socket cr�� au moment de la connexion du client.

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Ouaip c'est du BSD socket

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Si boost.Asio repose sur les sockets BSD (et je le pense), c'est du bidirectionnel.
    Cot� server, il faut bien prendre la socket cr�� au moment de la connexion du client.
    Bien s�r que c'est bidirectionnel.
    La question �tait : "Si je suis en cours de lecture asynchrone (en attente de trames), est-ce que je peux lancer une �criture asynchrone depuis la m�me socket ?"

  7. #7
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Bon j'ai fait 2 sockets TCP bind�es sur le m�me port:
    • Une pour la lecture en continu.
    • L'autre au besoin pour l'�criture

    Ca marche au poil, apr�s quelques heures de modifs acharn�es !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. design pattern sockets lecture/�criture
    Par rgamor dans le forum Langage
    R�ponses: 30
    Dernier message: 25/08/2011, 13h03
  2. stream et lecture/�criture simultan�e
    Par Sp4ce dans le forum C#
    R�ponses: 5
    Dernier message: 10/12/2008, 15h52
  3. Lecture et �criture sur une m�me socket ?
    Par nico_ayci dans le forum R�seau
    R�ponses: 2
    Dernier message: 19/05/2008, 07h17
  4. [Perl] lecture/�criture simultan�es sur une socket
    Par sephiburp dans le forum Programmation et administration syst�me
    R�ponses: 10
    Dernier message: 16/10/2007, 10h25
  5. Ouvrir un fichier texte en lecture ET �criture
    Par Steph12 dans le forum C++
    R�ponses: 12
    Dernier message: 17/06/2005, 08h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo