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

用java应用程序在linux中打开端口,java,linux,port,Java,Linux,Port,我有一个java应用程序,它在一个端口中创建一个socketserver。 我在windows机器上测试我的应用程序,并且运行正常,但是当我在linux机器上测试它时,端口没有监听 有没有办法专门在linux机器上打开端口 我运行“netstat”命令,但应用程序中使用的端口未显示。 它不会抛出任何异常。 我正在尝试从另一台计算机连接到应用程序,但连接被拒绝 说真的,我不知道为什么它不运行 请帮忙 谢谢, 大卫它也应该是一样的。它会在linux上引发异常吗?可能目标端口已被占用 编辑:也许您的代

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

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

我运行“netstat”命令,但应用程序中使用的端口未显示。 它不会抛出任何异常。 我正在尝试从另一台计算机连接到应用程序,但连接被拒绝

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

请帮忙

谢谢,
大卫

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

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


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

您试图打开的端口号是什么


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

在Windows和Linux上应该没有区别。你能发布一个你最有可能得到的异常stacktrace吗


可能的情况是,您选择的端口已被占用(在Linux上,通常一些服务正在运行),或者您尝试绑定一个1024以下的端口,该端口仅允许root用户使用。

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

就像Johan Buret所说的,如果您试图打开1024以下的端口,则必须以root或sudo身份运行程序

如果您运行的是类似ubuntu的发行版,而您不是root用户,并且root用户未启用,请执行以下操作: sudojavasocketserver

如果您是一个普通用户,并且可以su到根fedora/redhat发行版,请运行以下命令: 苏- (提示输入root用户的密码)
java SocketServer

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

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

telnet localhost 1234

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

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

我怀疑JBoss SAR没有正确配置以启动您的服务器。请尝试以下操作:

  • 从Linux命令行运行JAR文件(正如您在Windows上成功运行的那样)
  • 将SAR文件安装到windowsjboss安装中,看看是否会遇到与Linux相同的问题

是否已启用?尝试禁用它:

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


我的一个团队成员也面临着类似的问题。不确定你的具体问题是什么;对我们来说,这个问题是小而愚蠢的。Unix的路径分隔符是冒号“:”而windows的路径分隔符是分号“;”。从java应用程序调用socket server java进程时,请确保使用,以便运行时代码在Windows和Unix环境下都能工作。

两者之间没有区别。让我们看看你的代码,看看你想做什么唯一的区别是在windows机器上我运行一个“.jar”,在linux机器上我运行一个“.sar”,但它不影响操作系统的类型,但在jboss中。如果你不能在指定的端口上侦听,服务器套接字会抛出一个异常,你有这个异常吗?或者,如果您侦听正常,netstat应该显示您正在侦听的端口。端口号是1234。我是root用户我使用“netstat-na”和“netstat-na | grep 1234”它不会抛出任何异常问题不在我的代码中,因为它在windows机器中工作。防火墙不是问题,因为它没有。我试过了,但它抛出了一个“ClassNotFoundException:SocketServer”你在使用Sun Java还是gcj?gcj是java的一个开源实现,我一直很难使用它。试着安装Sun java jdk和jre。你是说java.net.ServerSocket,对吗?