【问题标题】:Java Linux ServerSocket does not do much [closed]Java Linux ServerSocket 并没有做太多 [关闭]
【发布时间】:2013-08-18 11:18:10
【问题描述】:

我正在运行 Linux Fedora 18,我想要的只是我的 java 代码,用于在 Web 浏览器中打印 hello linux,我输入 http://myhostname。我在 Windows 中使用了我的代码,它可以找到。但是在 Linux 中,我使用端口 80 被拒绝了权限。所以我然后我使用端口 8080 没有权限被拒绝,但它没有工作。使用端口 80 客户端接受,我只能在机器上发送和接收信息,即使它连接到网络,服务器套接字也不在不同的机器上。最后一件事我已经制定了策略文件以允许端口 80 工作,但它是无用的我仍然不确定我是否要在我的代码中设置一个策略文件。对不起,如果这个问题很长,但我已经研究这个问题一个月了,所以请不要告诉我用谷歌搜索它。所以我想我的主要问题是为什么 serverSocket 不能从 linux 机器广播任何内容以及如何修复它?

谢谢

【问题讨论】:

  • 看起来您用来运行 Java 应用程序的用户没有足够的权限使用端口 80或此端口已被另一个应用程序使用(类似的可以发生在 8080 端口)。
  • “它没用”的信息还不够。请阅读tinyurl.com/so-list,提供简短但完整的问题演示,并解释您是如何看到问题的。 (你有例外吗?网络浏览器会显示什么等?)
  • Mybe 看看这里会解释一些事情:serverfault.com/questions/112795/… 但是你应该分开/拆分你的问题并尝试一个一个地解决它们。
  • Jon Skeet 你应该首先真正阅读一个问题,因为如果你真的花时间考虑它,我确实会遵循。马蒂亚斯这是一个没有人回答这个问题的问题,它将被重新审视。

标签: java linux


【解决方案1】:

在 Linux 上,您需要 root 才能使用 0 到 1023 的系统端口。Tomcat 有一些方法可以在不让进程以 root 身份运行的情况下打开端口 80,但是在这里讨论它们有点复杂。 Linux 提供了授予访问这些端口的权限的方法,但通常我只使用端口 8080。

如果您使用端口 8080,则需要使用路由器将其重定向到端口 80,否则您必须指定要连接到端口 8080。您的浏览器仅假定端口 80。例如http://yourhost:8080/

要从另一台计算机连接到此服务器,您必须设置防火墙,以便您连接到所有计算机。防火墙旨在阻止您未明确允许的流量。这意味着您可能需要在服务器和网络路由器上打开防火墙,并将您的公共 IP 地址(不是您的内部 IP 地址)放在客户端的 hosts 文件中。

【讨论】:

  • 谢谢,不过我都试过了。
  • 在这种情况下,您将需要测试您可以访问该服务的每个步骤,以确定您无法远程访问它的原因。我将首先确定您可以首先访问它的位置。
【解决方案2】:

我做了一个 yum 更新,现在代码工作正常。

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 2014-08-25
    • 2016-12-14
    • 1970-01-01
    • 2010-10-14
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多