java tcp与公共i.p的连接

java tcp与公共i.p的连接,java,tcp,port,Java,Tcp,Port,我试图使用java中的服务器的公共I.p通过tcp连接到它。但是当我运行客户端应用程序时,我不断地得到一个连接被拒绝的错误。如果我使用本地主机而不是公共ip,那么它工作得很好 我在网上搜索了这个问题的几个原因,但我无法解决它 我在路由器设置中将端口转发到我机器的本地i.p地址(192.168.1.3)。然后,当我使用netstat-an运行服务器应用程序时,检查端口是否正在侦听。我看到这样的线条, 0.0.0.0:19999或[]19999。 19999是我试图收听的端口号。然后,我将Serve

我试图使用java中的服务器的公共I.p通过tcp连接到它。但是当我运行客户端应用程序时,我不断地得到一个连接被拒绝的错误。如果我使用本地主机而不是公共ip,那么它工作得很好

我在网上搜索了这个问题的几个原因,但我无法解决它

我在路由器设置中将端口转发到我机器的本地i.p地址(192.168.1.3)。然后,当我使用netstat-an运行服务器应用程序时,检查端口是否正在侦听。我看到这样的线条, 0.0.0.0:19999或[]19999。 19999是我试图收听的端口号。然后,我将ServerSocket构造函数更改为3参数构造函数,它也绑定了本地地址

InetAddress miad = InetAddress.getByAddress(addr);
ServerSocket socket1 = new ServerSocket(port,10,miad);
addr是我的机器本地i.p.的InetAddress。在这些修改之后,当我启动服务器应用程序时,我运行netstat,它显示:

TCP   192.168.1.3:19999    0.0.0.0 LISTENING
在这里,我认为我的服务器正在正确地侦听指定的端口

我还禁用了防火墙和防病毒软件

我已经在网上看到了一些关于这个问题的帖子和讨论,并且尝试了其中提到的大部分内容,但是我不断地发现连接被拒绝的错误


我会做错什么?当我使用localhost进行测试时,它运行时没有任何错误。

这是因为路由器(不是很确定,但几乎是)。尝试查看像www.canyouseeme.org这样的Web服务是否可以连接到您的服务器

其主要思想是,内部机器(局域网内)不能通过使用外部(公共)IP地址连接到同一局域网内的机器

我非常肯定,使用您的内部ip(192.168.1.3),它会工作


如果您确定转发的端口正确,CanYouSeeMe会说您的服务器是可访问的。如果没有,请确保您的ISP没有出于某种“安全原因”而阻塞端口。

这是因为路由器(不是很确定,但几乎没有)。尝试查看像www.canyouseeme.org这样的Web服务是否可以连接到您的服务器

其主要思想是,内部机器(局域网内)不能通过使用外部(公共)IP地址连接到同一局域网内的机器

我非常肯定,使用您的内部ip(192.168.1.3),它会工作


如果您确定转发的端口正确,CanYouSeeMe会说您的服务器是可访问的。如果没有,请确保您的ISP没有出于某种“安全原因”而阻塞端口。

要确定您的问题是否与Java和编程有关,请执行以下操作

telnet 192.168.1.3 19999

如果无法连接,那么superuser.com将是讨论此问题的更好地方。

要了解您的问题是否与Java和编程有关,请执行以下操作

telnet 192.168.1.3 19999

如果无法连接,superuser.com将是讨论此问题的更好场所。

添加以更快地获得帮助。您是从自己的本地网络连接到服务器,还是使用公共IP,还是从internet上的其他位置连接?(前者不适用于很多路由器/调制解调器)实际上我是在同一台机器上做的。这就是问题所在吗?顺便问一下,
System.out.println(miad)的结果是什么?您能否
telnet 192.168.1.3 19999
?添加以更快地获得帮助。您是从自己的本地网络连接到服务器,还是使用公共IP,还是从internet上的其他位置连接?(前者不适用于很多路由器/调制解调器)实际上我是在同一台机器上做的。这就是问题所在吗?顺便问一下,
System.out.println(miad)的结果是什么?你能
telnet 192.168.1.3 19999吗
?是的,这就是问题所在。我试着在不同的网络上运行客户端,它成功了。非常感谢。但我的程序需要以两种方式运行。因此,也许我可以尝试连接局域网中的服务器,如果不成功,那么尝试连接公共IP。这是一个合适的解决方案吗?是的,这就是问题所在。我试着在不同的网络上运行客户端,它成功了。非常感谢。但我的程序需要以两种方式运行。因此,也许我可以尝试访问局域网中的服务器,如果不成功,那么尝试连接公共IP。这是一个合适的解决方案吗?