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. P>
OK, désolé pour cela, c'est une question classique que je suis sûr, mais je ne sais pas comment commencer. P>
Dans un projet, j'ai travaillé pour qu'ils ont mis en œuvre beaucoup de magie avec 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. P>
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? P>
Merci d'avance p>
fluinis p> proxy.newproxyinstance () code> pour invoquer le serveur de verre de verre de manière transparente. P>
4 Réponses :
Si vous souhaitez écrire un programme de type serveur client simple, vous pouvez suivre le conseil donné dans cet tutoriel . P>
Si vous voulez faire quelque chose d'un peu plus impliqué, en plain Java comme vous dites, vous devrez peut-être consulter RMI . P>
Cependant, ces jours-ci, Services Web sont tous les rage et vous pouvez trouver cela à long terme, il est plus simple. P>
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. p>
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> "socket" est le mot que vous recherchez probablement si vous voulez faire des recherches. 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> 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. un bufferedreader pour la lecture de texte est la bonne (meilleure *) option: p>
Et pour connecter votre client à un serveur, vous devez écrire ceci: p>
L'utilisation d'une copropriété pour l'écriture de texte est très pratique: 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.
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.
Poisson-verre peut être plus de puissance de feu que nécessaire, mais je n'abandonnerais pas à tirer parti d'une bibliothèque existante. p>
Certaines options pour les sockets: P>
Si vous décidez d'aller plus en faveur des services Web que des sockets, Jetée est la voie à suivre pour aller pour Petite empreinte HTTP. P>
J'allais suggérer d'essayer une approche de producteur / consommateur JMS, mais vous voulez quelque chose de simple.