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

VB.NET Discussion :

Besoin d'aide développement Jeu de Poker en réseau


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Besoin d'aide développement Jeu de Poker en réseau
    Bonjour,
    Je suis étudiant en informatique et pour projet d'examen j'ai le devoir de faire un jeu de Poker (Texas hold'em) en réseau (un serveur qui gère plusieurs clients).
    Seulement voilà je n'ai eu aucun cours et je m'y connais absolument pas en programmation .Net et donc encore moins VB.Net.
    Du coup j'ai 2 semaines pour faire un début de projet jouable et pas trop mauvais (niveau fonctionnalité le design passe en dernier)
    Donc voilà je viens ici pour demander une possible aide pour mon projet, en gros quand je bloquerais sur mon application je posterais sur cette discussion.

    Du coup voilà premier problème qui se pose à moi, je dois gérer la connexion de clients au serveur, seulement voilà je pense que je dois passer par des threads (que j'ai encore jamais utilisé) et du coup lors de la création d'un thread mon interface utilisateur (coté serveur) se bloque. Voici une partie du code. Je m'y prends probablement très mal du coup si vous savez me réorienté pour que je fasse quelques choses de correcte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Imports System.Net.Sockets
    Imports System.Net
    Imports System.Threading
     
    Public Class PokerVBServer
        Public port As String = "8080"
        Public ip As String = "127.0.0.1"
        Public socketServeur As Socket
        Public ipepServeur As IPEndPoint
        Public socketClient As Socket
        Public threadConnCli As Thread
        Public joueurConnecte As Integer = 0
     
        Sub Main(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            socketServeur = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            ipepServeur = New IPEndPoint(IPAddress.Parse(ip), port)
     
            socketServeur.Bind(ipepServeur)
            socketServeur.Listen(1)
     
            Console.WriteLine("Socket serveur initialisé")
        End Sub
     
     
     
        Delegate Sub dBtn_Demarrer_Click(sender As Object, e As EventArgs)
        ''' <summary>
        ''' Quand on appuie sur démarrer le serveur se lance et se met en attente d'une connexion
        ''' A Chaque client connecté un nouveau thread se lance
        ''' </summary>
        '''
        Private Sub BTN_Demarrer_Click(sender As Object, e As EventArgs) Handles BTN_Demarrer.Click
            threadConnCli = New Thread(AddressOf ThreadConnexionClient)
            threadConnCli.Start()
            BTN_Demarrer.Visible = False
            BTN_Arreter.Visible = True
     
        End Sub
     
        Sub ThreadConnexionClient()
            While True
                If joueurConnecte < 4 Then
                    Console.WriteLine("En attente d'un client")
                    socketClient = socketServeur.Accept()
                    joueurConnecte += 1
                    While (socketClient.Connected)
     
                    End While
                    joueurConnecte -= 1
                End If
            End While
        End Sub
     
        Private Sub BTN_Arreter_Click(sender As Object, e As EventArgs) Handles BTN_Arreter.Click
            threadConnCli.Abort()
            BTN_Demarrer.Visible = True
            BTN_Arreter.Visible = False
     
        End Sub
     
    End Class

    Je me rends compte que j'en demande peut être beaucoup mais là j'ai regardé pas mal de tuto et j'arrive pas à suivre due au manque d'expérience que j'ai avec le VB.Net
    Du coup je remercie les gentilles âmes qui passeront par ici et tenteront de me répondre

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 153
    Points : 25 071
    Points
    25 071
    Par défaut
    ton code est pas idiot, mais je pense qu'il serait préférable de le traiter autrement

    sur les sockets (et les classes un peu plus haut niveau tels tcplistener et tcpclient) il y a des méthodes asynchrones
    ces méthodes implémentent les threads et te permettent de ne pas le gérer toi même

    ces méthodes commecent par begin et demande en paramètre l'adresse d'une méthode à appeler quand ca se produit
    ca ressemble donc à un évènement
    on appelle ca un callback, car on fournit une méthode à appeler en retour

    server.beginaccept
    il faudra appeler endaccept dans le callback pour finaliser la connexion
    et toujours dans ce callbak il faut refaire à la fin un beginaccept pour la connexion suivante (qui pointe sur le même callback)

    .beginread est aussi utile, le callback sera appelé dès qu'il y aura des octets à lire
    à savoir, si le callback de read est appelé et qu'il n'y a pas d'octets à lire ca veut dire que la connexion a été fermée par le client
    car il faut aussi gérer les déconnexions possibles
    il faudra donc pouvoir identifier tes clients, y compris la reconnexion d'un client sans te mélanger les pinceaux

    concernant le dialogue, il te faut choisir une norme de dialogue
    l'envoi tu peux le faire en synchrone (.Send) ca ne prend pas trop de temps

    après 2 semaines sans connaitre vb.net et les sockets ca me parait compliqué ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Besoin d'aide : Expertiser les lenteurs d'un réseau
    Par hunyka dans le forum Dépannage et Assistance
    Réponses: 1
    Dernier message: 30/11/2012, 15h44
  2. Besoin d'aide pour jeu de Pinball
    Par amintheone dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 08/08/2010, 15h22
  3. Réponses: 1
    Dernier message: 24/10/2008, 14h25
  4. besoin d'aide pour jeu d'awalé
    Par Dabech dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 12/04/2008, 22h41
  5. Réponses: 4
    Dernier message: 03/08/2005, 14h02

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