使用java应用程序在linux中打开端口

时间:2009-06-24 10:52:06

标签: java linux port

我有一个在端口中创建套接字服务器的java应用程序。 我在Windows机器上测试我的应用程序,并且运行正常,但是当我在linux机器上测试它时,端口没有监听。

有没有办法在linux机器上专门打开一个端口?

我运行'netstat'命令,我的应用程序中使用的端口没有出现。 它不会抛出任何异常。 我正在尝试从另一台机器连接到应用程序,并且连接被拒绝。

真诚的,我不知道它为什么不运行......

请帮忙。

感谢, 大卫

10 个答案:

答案 0 :(得分:3)

您尝试打开的端口号是什么?

如果它低于1024,则只有root用户可以打开它或授予对它的访问权。

答案 1 :(得分:2)

您确定您的代码实际上正在执行吗?您对.sar文件中的代码的评论意味着您没有直接执行它,而是将其部署到jboss。也许它没有正确部署?您是否尝试在创建ServerSocket之前和之后添加一些日志语句(甚至是System.out.println语句)?

答案 2 :(得分:1)

Windows和Linux应该没有区别。你能发布一个你最有可能获得的异常堆栈跟踪吗?

可能的可能性是,您选择的端口已经被占用(在Linux上通常是某些服务正在运行)或者您尝试将端口绑定到1024以下,只允许root用户。

答案 3 :(得分:0)

它应该是一样的。它会在linux上引发异常吗?也许目标端口已被占用。

编辑:也许您的代码成功绑定到端口但Linux防火墙会阻止传入连接?

编辑2:也许您的Linux JBoss配置不同,并且包含ServerSocket初始化的代码不会自动执行。

答案 4 :(得分:0)

使用netstat -napt进行检查(我不知道你使用了哪些参数)。

答案 5 :(得分:0)

就像Johan Buret所说,如果你试图打开1024以下的端口,你将不得不以root或sudo的身份运行你的程序。

如果您正在运行像ubuntu这样的发行版,而您不是root,并且未启用root,请执行以下操作: sudo java SocketServer

如果您是普通用户并且可以su到root fedora / redhat基于发行版运行: 苏 - (提示root的密码) java SocketServer

答案 6 :(得分:0)

您是否尝试过从同一台计算机连接,以排除防火墙问题?

您还可以使用telnet检查端口是否打开

telnet localhost 1234

(如果端口未打开,将拒绝连接)

答案 7 :(得分:0)

我怀疑没有正确配置JBoss SAR来启动服务器。请尝试以下方法:

  • 从Linux命令行运行JAR文件(在Windows上已成功运行)
  • 将SAR文件安装到Windows JBoss安装中,看看是否遇到与Linux上相同的问题

答案 8 :(得分:0)

是否启用了SELinux?请尝试停用它:http://www.crypt.gen.nz/selinux/disable_selinux.html

答案 9 :(得分:0)

回复此帖子;为了新来者的利益。

我的一名团队成员面临着类似的问题。不确定你的具体问题是什么;对我们来说,这个问题很小而且很愚蠢。 Unix的路径分隔符是冒号“:”,而对于Windows,它是分号“;”。在从java应用程序调用套接字服务器java进程时,请确保使用java.io.File.pathSeparator,以便RunTime代码可以在Windows和Unix环境中运行。