【问题标题】:Java TCP/IP Server - Client Communication over the internetJava TCP/IP 服务器 - 通过 Internet 的客户端通信
【发布时间】:2012-06-29 21:38:57
【问题描述】:

我想通过 Internet 建立一个 tcp/ip 连接。我已经有两个类,一个处理请求的 tcpserver 和一个连接、发送和接收数据的 tcpclient。

到目前为止,我已经让它在本地网络上完美运行。通常的 127.0.0.1 / localhost 和我的 192.168.xxx.xxx 地址没有任何问题。

我的问题是,我必须做些什么才能让它在互联网上运行。因为我可能想做一些涉及简单 http/server 的研究,所以我需要它来工作。

我怀疑它是我的防火墙,但可能是它阻止了这种类型的连接的 ISP。有人有想法吗?

【问题讨论】:

    标签: java tcp ip


    【解决方案1】:

    您需要在路由器中打开一个端口,该端口通向服务器正在侦听的端口。然后,您连接到您的公共 IP。这个ip可以在http://www.visaminip.se/找到

    【讨论】:

    • 请看我的代码(当然是多线程的;):tcpcserver t = new tcpserver(8000);线程.sleep(100); tcpclient c = new tcpclient("31.151.xxx.xxx",8000);我在同一个项目的同一台计算机上运行它。但就像单元测试一样,这应该可以工作,对吧?或者可能是我无法通过互联网连接到自己的电脑。
    • 您应该使用您的网关地址连接到您的调制解调器/路由器。打开命令提示符,输入 ipconfig。查找“标准网关”并在浏览器中输入。这将提示一个登录窗口,您需要输入您的凭据。如果您没有更改,通常是:登录 = 管理员、密码 = 1234 或密码或管理员。这也印在手册中。当您到达该页面时,您可以配置您的路由器设置。在这里你需要打开你的服务器正在监听的端口
    【解决方案2】:

    要通过 Internet 提供服务,您需要一个公共 IP 地址。 10.x.x.x 和 192.168.x.x 是专用网络。 127.x.x.x 仅适用于本地机器。

    客户端可以连接到特定端口的公共IP地址。

    服务器的调制解调器/路由器/防火墙允许打开此端口并将流量传递到该端口上的服务器。

    【讨论】:

    • 谢谢彼得,我已经通过使用“retrieve-my-ip”网站查找了我的公共 IP。它以 31.151.xxx.xxx 开头,所以这可能是一个公共 IP 地址吧?
    • 是的。而您的客户只需要互联网访问。另一方面,服务器需要设置防火墙以允许访问您的端口。
    • 我刚刚禁用了我的防火墙,虽然我不应该这样做。无论如何,我做了一些在线端口扫描检查,它说所有常用端口都无法访问。也许我可以检查我的路由器设置是否有一些端口开放?如果不是这种情况,可能是我的 Internet 服务器提供商阻止了所有。
    • 一些 ISP 会阻止常见的 HTTP 端口,例如端口 80。您可以尝试使用其他端口。
    • 现在我正在编写一个单元测试来检查我的计算机上的端口 1-8000,我的路由器防火墙和 pc 防火墙被禁用,所以如果这不起作用,它可能是我的 ISP。其他人知道在您自己的计算机上托管网络服务器的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2014-05-10
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多