2013-08-16 4 views
-6

Je cours Linux Fedora 18 et tout ce que je veux, c'est mon code java pour imprimer bonjour linux dans un navigateur web que je tape http: // myhostname. J'ai utilisé mon code dans Windows et ça marche. Cependant, sous Linux, j'utilise le port 80 obtenu une autorisation refusée. Donc, je puis utiliser le port 8080 aucune autorisation refusée, mais cela n'a pas fonctionné. Utilisant le port 80 le client accepte et je peux envoyer et recevoir l'information seulement sur la machine le seversocket pas sur un différent même si c'est connecter le réseau. Dernière chose que j'ai fait dossier de politique pour permettre au port 80 de fonctionner mais c'était inutile Je ne suis toujours pas sûr de définir un fichier de stratégie dans mon code. Désolé si cette longue question, mais j'ai fait des recherches sur ce problème pour un mois pas s'il vous plaît ne me dites pas de google it. Donc je suppose que ma question principale est de savoir pourquoi serverSocket ne peut rien diffuser à partir de la machine Linux et comment y remédier?Java Linux ServerSocket ne fait pas beaucoup

Merci

+0

On dirait que l'utilisateur que vous utilisez pour exécuter votre application Java n'a pas assez de privilèges pour utiliser le port 80 ** ou ** ce port est déjà utilisé par une autre application (similaire peut arriver avec le port 8080). –

+1

"Cela n'a pas fonctionné" n'est pas assez d'informations. S'il vous plaît lire http://tinyurl.com/so-list, fournir un court mais complet démontrant le problème, et expliquer comment vous * voyez * le problème. (Avez-vous une exception? Que montre le navigateur Web, etc?) –

+0

Mybe ayant un coup d'oeil ici expliquera quelques choses: http://serverfault.com/questions/112795/how-can-i-run-a -server-on-linux-on-port-80-as-a-normal-user Mais vous devriez séparer/diviser vos problèmes et essayer de les résoudre un par un. – Matthias

Répondre

0

Sur Linux, vous devez être root pour utiliser les ports du système de 0 à 1023. Tomcat a les moyens de l'ouverture du port 80 sans quitter le processus en cours d'exécution en tant que root, mais ils sont un peu compliqué à discuter ici. Linux fournit des moyens de donner des permissions pour accéder à ce port, mais habituellement je n'utilise que le port 8080.

Si vous utilisez le port 8080, vous devez le rediriger vers le port 80 à l'aide de votre routeur, ou vous devrez spécifier que vous voulez pour se connecter au port 8080. Votre navigateur suppose seulement le port 80. par exemple Pour vous connecter à ce serveur à partir d'un autre ordinateur, vos pare-feu doivent être configurés pour que vous puissiez vous connecter à ce serveur. Un pare-feu est conçu pour arrêter le trafic que vous n'avez pas explicitement autorisé. Cela signifie que vous devrez peut-être ouvrir votre pare-feu sur votre serveur et votre routeur réseau et mettre votre adresse IP publique (et non votre adresse IP interne) dans le fichier hosts de votre client.

+0

Merci, mais j'ai essayé tout cela. – user583713

+0

Dans ce cas, vous devrez tester chaque étape de la façon dont vous pouvez accéder au service pour déterminer pourquoi vous ne pouvez pas y accéder à distance. Je commencerais par déterminer où vous pouvez y accéder en premier. –

0

J'ai fait une mise à jour de yum et le code fonctionne très bien maintenant.

Questions connexes