2010-11-17 21 views
0

J'écris actuellement un simple client/serveur en Java en utilisant des sockets. Je veux que le serveur prenne des décisions basées sur différentes «commandes» et/ou objets sérialisés reçus du client via le socket, et vice-versa.Comment puis-je implémenter le contrôle de flux avec seulement la communication par socket en Java?

Quelque chose comme:

[Receive Command 'DoSomething' From Client] 
[Call Method 'DoSomething' on the Server] 
[Send result/status to Client] 
etc... 

Y at-il une convention pour le contrôle de débit comme celui-ci en utilisant la communication socket ordinaire, peut-être avec sérialisation? Dois-je utiliser RMI en Java à la place?

Répondre

1

Il n'y en a pas. Si vous créez une communication client/serveur avec des sockets, vous devrez définir votre propre protocole et les règles qui s'appliquent à ce protocole. RMI peut faciliter cette étape en exécutant des méthodes objet spécifiques. Le commerce de, la configuration initiale pour le serveur rmi, etc., que j'ai entendu ces dernières années n'est pas si difficile que ce soit.

Voici un RMI tutorial Vous aimeriez peut-

2

Je recommanderais KryoNet pour faire n'importe quel type de matériel de RMI sans le frais généraux de RMI et l'inflexibilité qu'il apporte.

http://code.google.com/p/kryonet/

KryoNet fait les hypothèses qu'il ne seront utilisées que pour les architectures client/serveur et que KryoNet sera utilisé des deux côtés du réseau. Étant donné que KryoNet résout un problème spécifique , l'API KryoNet peut le faire de manière très élégante avec . Le projet Apache MINA est similaire à KryoNet. L'API de MINA est de niveau inférieur et beaucoup plus compliquée. Même le plus simple client/serveur nécessitera beaucoup plus de code à écrire. MINA n'est pas non plus intégré à un environnement de sérialisation robuste et ne prend pas intrinsèquement en charge l'infrastructure RMI.

Le projet Priobit est une couche minimale sur NIO. Il fournit un réseau TCP similaire à KryoNet, mais sans les fonctionnalités de niveau supérieur . Priobit nécessite toutes les communications réseau à se produisent sur un seul thread.

Le projet Java Game Networking est une bibliothèque de niveau supérieur similaire à KryoNet. JGN n'a pas aussi simple d'une API.

+0

Cela semble assez cool. Je pourrais l'utiliser pour ce petit projet au lieu d'une solution de socket simple à laquelle je pensais. Merci pour l'info! – chucknelson