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

Réseau C Discussion :

Gestion d'évènement socket tcp


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut Gestion d'évènement socket tcp
    Bonjour,

    J'ai choisi de programmer un petit jeu simple en tcp. J'ai fait la version solo et je voudrais le passer en multi-joueurs.

    J'ai réussi à faire une découverte des serveur situé sur le lan à l'aide de socket udp multicast. tout va bien.

    Je cale au modèle de thread à adopter durant la phase de jeu. Le client devrait dès le début de la partie en attente d'un évènement de la part du serveur MAIS pouvoir lui signaler des évènement de sa partie qd il arrive. IDEM pour le serveur. Le serveur fait donc office de "duplicateur" de paquets et tout le monde attend tout le monde et on cause qui veut quand on veut.

    J'hésite:
    Un Thread, Une seule socket avec lecteur & émission sur la même mais un select sur la réception serait bloquant.
    Deux Thread, Une seule socket avec lecture sur un thread & écriture sur l'autre.
    Deux thread, deux sockets connectées chacune client-serveur et serveur-client

    J'espère que je ne me suis pas trop contredis. Je connais mes fonctions réseaux mais je n'ai jamais appris à les utiliser dans un modèle valable.

    Je suis donc à la recherche d'inspiration.

    Merci

    PS: j'ai déja lu les 2-3 liens de référence réseau souvent donnés sur ce forum.

  2. #2
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Personnellement je n'aurais pas utilisé de thread mais plutôt un tableau de descripteur de sockets.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par juve1897 Voir le message
    Personnellement je n'aurais pas utilisé de thread mais plutôt un tableau de descripteur de sockets.
    et select() ?

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    Je vais essayer de reformuler ma question car je suis toujours dans le flou total et je n'arrive pas à coder une seule ligne.

    J'aimerais que mon client et mon serveur puissent s'échanger des informations sans avoir le stupide jeu de Question -> Attendre la réponse.....
    J'aimerais que mon client soit à la en attente de tout ce qui peut venir et qu'il aie la capacité d'informer le serveur d'un évènement.

    Si je suis sur un sélect pour voir ce qui arrive. Je vais avoir difficile de réagir à ce qui se passe. Je pensais donc utiliser 2 threads sur la même socket. Est-ce fesable ? faut-il un mutex ? Ou alors faut-il une socket d'écoute et une socket d'envois ?

    Je dois avouer que je suis bien perdu même en ayant relu 5x le tuto de emdel.

    J'ai recherché je ne trouve que des tutos où on explique le principe de "question réponse" alors que moi je voudrais une gestion d'évènement

  5. #5
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    et select() ?
    Oui avec select, puis FDISSET etc....

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    Maieuhhh pourquoi les discutions de débutant comme les miennes sont toujours remplies de réponses réponses techniques entre membres éclairés qui n'apportent rien à la compréhension de celui qui a posé la question....

    Les fonctions ne m'interessent pas, je sais ouvrir le man. Je cherche une manière, une modèle, un principe qui marche et que me permette de solutionner mon problème...

    Je reformule. Je ne vois pas comment attendre sur une socket et pouvoir écrire dessus a part en utilisant des threads. D'où la question qui suit dois-je utiliser un mutex pour partager une socket entre deux threads. Et est-ce que deux thread peuvent utiliser la même socket l'un en lecture et l'autre en écriture simultanément ?

    Dans l'attente d'une réponse.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Haknaton Voir le message
    Je reformule. Je ne vois pas comment attendre sur une socket et pouvoir écrire dessus a part en utilisant des threads.
    OK. C'est une façon simple de traiter le problème.
    D'où la question qui suit dois-je utiliser un mutex pour partager une socket entre deux threads.
    Non.
    Et est-ce que deux thread peuvent utiliser la même socket l'un en lecture et l'autre en écriture simultanément ?
    Oui.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Haknaton Voir le message
    Je reformule. Je ne vois pas comment attendre sur une socket et pouvoir écrire dessus a part en utilisant des threads.
    très simple : en utilisant les sockets asynchrones...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04
  2. Gestion d'événements hors tables
    Par Quentin dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 11/02/2005, 00h09
  3. [SOCKET] TCP : select devant send();
    Par trois_1 dans le forum Développement
    Réponses: 4
    Dernier message: 02/03/2004, 18h10
  4. [socket][tcp] jeu en reseau
    Par souris_sonic dans le forum Développement
    Réponses: 2
    Dernier message: 30/05/2003, 07h31
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40

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