2010-01-06 7 views
3

im développer un jeu de cartes multi-joueurs qui nécessite que les clients communiquent entre eux ou avec un serveur général. Je n'ai jamais fait cela auparavant, j'ai donc besoin d'une direction ou un tutoriel sur la façon d'y parvenir.tutoriel java server/client général

Jusqu'à présent, j'ai créé le local, version unique personne du jeu ...

Répondre

5

Sun a une bonne tutorial on writing a client/server pair avec des exemples de code.

+1

merci! cela devrait bien fonctionner .. – Ali

+0

en guise de suivi ... si je devais passer d'un objet à un autre objet (disons en passant des objets Carte à l'objet Dealer), devrais-je utiliser la sérialisation? – Ali

+2

@Ali: Certainement, bien que si vous écrivez votre propre protocole, vous pouvez simplement envoyer des identifiants comme AS (pour Ace of Spades) ou 1H (1 of hearts) et ignorer le processus de sérialisation. – OscarRyz

1

Jusqu'à présent, j'ai créé le local, version unique personne du jeu ...

Grand, je suggère de poursuivre la version multi-joueurs local du jeu (même quand il est contrôlé par le même "terminal")

De là, vous pouvez explorer RMI pour appeler les méthodes à distance. Cela devrait être beaucoup plus simple que de créer la version multijoueur et d'ajouter du réseautage.

Qu'est-ce que RMI est fait abstraire la connectivité réseau et vous permettent de simplifier l'exécution des objets d'appel à distance (qui est, il simplifie avoir à écrire votre propre protocole avec les sockets)

+0

whoaaa je n'avais même pas entendu parler de cela ... cela semble beaucoup plus simple .. en référence à mon commentaire ci-dessus sur la sérialisation, serait RMI un moyen plus simple d'accomplir cela? – Ali

+0

En fait, ils vont ensemble. En écrivant votre propre protocole (comme le suggère la réponse ci-dessus), vous pouvez décider d'utiliser des objets sérialisables ou non. Le * problème * (ou l'opportunité) est que vous devrez aussi coder les instructions pour invoquer les méthodes de l'autre côté du fil, et renvoyer les résultats. Avec RMI (qui signifie Remote Method Invocation), vous n'avez pas besoin de coder la logique pour appeler une méthode ou récupérer les résultats du client sur le serveur, vous les appelez simplement. A propos de la sérialisation, il est assez simple en termes généraux (vous venez d'implémenter l'interface 'Serializable') – OscarRyz

0

RMI est plus complexe. Vous devez comprendre certains concepts avant de commencer avec RMI, comme étendre Remote, RemoteExceptions, etc. Et également, exécuter des applications alimentées par RMI nécessite certaines étapes, telles que le démarrage de rmiregistry, et la définition d'un fichier de politiques.

Si vous êtes débutant, commencez par les prises simples. Ils sont plus faciles à comprendre, mais un peu longs à coder. Le RMI est plus facile à coder, mais difficile à comprendre.

Pour Sockets:

TCP Sockets

UDP and Datagrams

Pour RMI:

Simple tutorial to RMI - Really helped me start