2012-06-06 7 views
0

Est-il possible d'écrire une applet Java qui peut être un serveur sur l'ordinateur client dans le réseau local du client? Pour être plus précis, ce que je cherche à faire est le trafic non-Web de tunnel sur le Web. L'expéditeur enverrait à l'applet, qui transmettrait ensuite les données reçues au serveur.Une applet Java peut-elle fonctionner en tant que serveur?

Est-ce que ce genre de chose est possible? Quelles sont les restrictions qui pourraient gêner?

Remarque: Je sais que l'applet peut se reconnecter au serveur, ce n'est pas un problème. Le problème est de savoir si une applet peut ou non écouter une connexion/données sur un port côté client local. Une applet non signée peut uniquement connecter l'hôte d'où elle provient.

Répondre

3

Une applet signée peut établir la connexion que vous voulez et peut écouter sur les ports tcp-ip.

Source: http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

+0

Je ne parle pas d'appel, je parle d'écouter les connexions entrantes sur la machine cliente locale. Transférer les données entrantes vers le serveur à partir duquel l'applet est sorti n'est pas un problème car tout cela est fait via HTTPS. – cdeszaq

+0

Une applet signée peut faire tout ce qu'une application java peut faire, y compris l'écoute sur les ports tcp-ip. –

+0

Avec une applet non signée, l'utilisateur sera-t-il simplement invité à l'autoriser si l'applet tente d'ouvrir un port tcp-ip pour écouter, ou une exception sera-t-elle levée? – cdeszaq

0

En général, il ne peut pas. L'une des raisons en est que les applets ont tendance à être exécutées dans des environnements à sécurité limitée, ce qui signifie qu'ils n'ont pas la possibilité d'ouvrir les sockets du serveur.

Il existe des moyens de contourner une telle restriction, vous pouvez fondamentalement spécifier une politique de sécurité spéciale pour l'applet, ou l'exécuter dans un conteneur spécial non contraint; mais pourquoi s'embêter quand vous pouvez simplement porter le contenu de votre application dans une servlet standard, ou même un serveur autonome?

+0

Il suffit de signer l'applet. –

+0

Il ne peut pas être autonome ou une servlet standard. Il doit être aussi petit que possible, car il devra être chargé dans une page de navigateur.Sinon, si c'est une applet signée, alors il peut ouvrir un port sur le client local et écouter les connexions entrantes. – cdeszaq

+0

Pourquoi est-il si important de canaliser vos informations à travers l'ordinateur de quelqu'un d'autre? Vous pouvez le tunnel à travers votre propre ordinateur! Déployez une servlet sur votre ordinateur ou exécutez le serveur autonome sur votre ordinateur. Faites-le écouter le port non-web, et relayer les demandes au port Web. Les navigateurs Web font des serveurs minables. –

1

Le serveur ne se connecte à aucun emplacement. Le serveur ouvre la socket serveur et écoute.

Dans le passé, pour autant que je me souviens du socket serveur a été limité dans MSIE et a été autorisé dans Netscape (vous rappelez-vous ce navigateur?) :)

J'ai personnellement pas été écrit applets pour les 10 dernières années, donc je n'ai aucune idée de ce qui se passe maintenant avec les navigateurs existants, mais c'est très facile à vérifier. Il suffit d'écrire l'applet la plus courte possible et de mettre le code new ServerSocket(1234).accept(); dans sa méthode init() ou start(). Si aucune exception n'a été levée, vous pouvez écrire une applet qui fonctionne comme un serveur. Sinon, vous ne pouvez pas. Il suffit de l'essayer avec tous les navigateurs disponibles.

20 minutes de travail et vous avez terminé. Bonne chance. Je serais heureux de connaître les résultats.

Questions connexes