9
votes

faire une application Java Server client

J'essaie de faire une application Java à une manière client / serveur. Le client est une interface graphique dans SWT qui affiche des données du serveur. Le serveur est connecté à une base de données.

OK, désolé pour cela, c'est une question classique que je suis sûr, mais je ne sais pas comment commencer.

Dans un projet, j'ai travaillé pour qu'ils ont mis en œuvre beaucoup de magie avec proxy.newproxyinstance () pour invoquer le serveur de verre de verre de manière transparente.

Je ne veux pas utiliser un serveur de verre de verre. Je veux juste quelque chose de simple en java plain. Mais le concept de procuration semble assez cool.

Avez-vous des idées ou des exemples d'une telle chose? Comment écrivez-vous la partie serveur pour gérer les demandes des clients?

Merci d'avance

fluinis


1 commentaires

J'allais suggérer d'essayer une approche de producteur / consommateur JMS, mais vous voulez quelque chose de simple.


4 Réponses :


3
votes

Si vous souhaitez écrire un programme de type serveur client simple, vous pouvez suivre le conseil donné dans cet tutoriel .

Si vous voulez faire quelque chose d'un peu plus impliqué, en plain Java comme vous dites, vous devrez peut-être consulter RMI .

Cependant, ces jours-ci, Services Web sont tous les rage et vous pouvez trouver cela à long terme, il est plus simple.


0 commentaires

1
votes
  1. Identifiez les services que vous souhaitez fournir (loading, éditeur, marquewortbelch)
  2. Décidez du protocole de communication / de messagerie (HTTP semble fertile.)
  3. Mettez en œuvre les services, les tests unitaires fréquemment pour s'assurer qu'ils travaillent.
  4. Commencez maintenant à écrire le client, gardant à l'esprit que vous devrez peut-être ajouter de nouveaux services ou modifier ceux existants.

    Une chose qui me vient à l'esprit est de savoir pourquoi voulez-vous l'écrire dans "Java simple" plutôt que d'utiliser un serveur d'applications existant? une chose EJB3 à résumé et à gérer la communication, la sécurité, l'intégrité transactionnelle, etc.


0 commentaires

40
votes

Je vais expliquer TCP:
Le concept de base est que vous devez exécuter un "serveur" sur une machine. Ce serveur accepte les clients en attente d'une connexion. Chaque connexion passe sur un port (vous savez, j'espère ...).
Utilisez toujours des ports ci-dessus 1024 car les ports inférieurs à 1025 sont la plupart du temps réservé aux protocoles standard (tels que http (80), FTP (21), Telnet, ...)

Cependant, la création d'un serveur en Java est effectué. manière: p> xxx pré>

"socket" est le mot que vous recherchez probablement si vous voulez faire des recherches.
Et pour connecter votre client à un serveur, vous devez écrire ceci: p> xxx pré>

mais maintenant, il n'y a pas encore de connexion. Le serveur doit accepter le client d'attente (comme je l'ai remarqué ci-dessus): p> xxx pré>

fait! Votre connexion est établie! La communication est comme le fichier-io. La seule chose que vous devez garder à l'esprit est que vous devez décider lorsque vous souhaitez affleurer le tampon et envoyer des données à travers la prise.
L'utilisation d'une copropriété pour l'écriture de texte est très pratique: p> xxx pré>

un bufferedreader pour la lecture de texte est la bonne (meilleure *) option: p>

ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Object object = ois.readObject(); // Read the object
// Don't close it!
// Then cast it to whatever you want.


6 commentaires

Merci pour votre réponse. Je comprends bien avec vous exemple comment récupérer le texte. Mais est-il possible avec une prise d'invoquer une méthode sur le serveur et d'obtenir un objet complexe en retour?


Jetez un coup d'œil à ObjectOutPutStream et ObjectInPhatStream.


En outre, vous pouvez penser à Java Rmi (Invocation de la méthode à distance) - Il y a une bonne documentation sur elle.


Remarque: Unix nécessite que vous soyez root pour utiliser <1024 ports. Windows a un schéma plus complexe, mais le permet généralement.


@ Thorbjørnravnandersen: C'est l'une des premières choses que j'ai mentionnées dans ma réponse.


Je élabore dans la raison pourquoi c'est le cas.



5
votes

Poisson-verre peut être plus de puissance de feu que nécessaire, mais je n'abandonnerais pas à tirer parti d'une bibliothèque existante.

Certaines options pour les sockets:


0 commentaires