我有一个在端口中创建套接字服务器的java应用程序。 我在Windows机器上测试我的应用程序,并且运行正常,但是当我在linux机器上测试它时,端口没有监听。
有没有办法在linux机器上专门打开一个端口?
我运行'netstat'命令,我的应用程序中使用的端口没有出现。 它不会抛出任何异常。 我正在尝试从另一台机器连接到应用程序,并且连接被拒绝。
真诚的,我不知道它为什么不运行......
请帮忙。感谢, 大卫
答案 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来启动服务器。请尝试以下方法:
答案 8 :(得分:0)
答案 9 :(得分:0)
回复此帖子;为了新来者的利益。
我的一名团队成员面临着类似的问题。不确定你的具体问题是什么;对我们来说,这个问题很小而且很愚蠢。 Unix的路径分隔符是冒号“:”,而对于Windows,它是分号“;”。在从java应用程序调用套接字服务器java进程时,请确保使用java.io.File.pathSeparator,以便RunTime代码可以在Windows和Unix环境中运行。