代码之家  ›  专栏  ›  技术社区  ›  Frank

如何从外部访问我的PC上运行的Java servlet?

  •  3
  • Frank  · 技术社区  · 14 年前

    我使用NetBeans6.7编写了一个servlet,它运行时会打开一个浏览器窗口,其中包含以下地址: http://localhost:8080/My_App/Test_Servlet ,我用我的IP地址替换了“localhost”,现在看起来像这样: http://192.???.1.??:8080/My_App/Test_Servlet 但我试着从我家外面的另一台电脑上访问它,它什么也读不到,我想知道我是否需要改变Windows防火墙设置来允许外部流量,这是一个Paypal的IPN应用程序,所以我称PayPal,他们说他们不能访问: http:// 192。???1。?:8080/我的应用程序/测试servlet

    我应该做些什么来允许从“PayPal.com”访问“MyAppApp/TestIsServices”?


    部分成功!在我阅读文章,建立静态IP,端口转发,我可以发送一个消息从贝宝的测试IPN页,当我试图发送第二个它不能通过,所以我停止了我的servlet,然后我可以发送另一个,消息,再次失败的第二个,为什么? 弗兰克

    3 回复  |  直到 14 年前
        1
  •  5
  •   T.J. Crowder    14 年前

    我无法决定是投票给serverfault.com还是superuser.com,所以我在这里回答:

    您引用的IP地址看起来像本地地址(例如,192.168.x.x是本地范围之一),因此从网络外部永远无法访问该地址。这是路由器(或调制解调器)分配给您的地址。

    要允许外部世界向您的PC拨打电话:

    • 你的PC需要在任何一个你期待一个电话(如果它是一个Paypal IPN,这是非常经常)
    • 您必须有一个静态IP地址才能连接到Internet,或者使用 dynamic DNS 服务
    • 你必须给PayPal你的Internet连接的静态IP地址(不是你的PC的内部地址)或者你用动态服务建立的DNS名称。
    • 您必须将路由器配置为将请求转发到您的静态公共地址到您的计算机(因为您的路由器可能支持多台计算机,需要知道哪个特定的计算机应该处理该请求)
    • 如果您使用诸如Windows防火墙之类的软件防火墙,则必须告诉它它可以接受该端口上的请求。

    别让这看起来让人气馁。这不是小事,但并不难。不过,请注意,一旦您告诉路由器将端口转发给您,您就可以绕过路由器可能提供的大部分或全部保护,以防计算机受到攻击(在该端口上;通常是攻击者端口扫描)。它可能没有提供任何,但可能提供了一些。

        2
  •  1
  •   Buhake Sindi Tesnep    14 年前

    无法从外部访问您的应用程序到本地PC。首先,您的IP地址不是静态的。当它到达您的服务提供商的互联网云时,您将拥有另一个IP地址。

    更好的解释 http://portforward.com/help/portforwarding.htm ):

    1.)互联网上的每个设备都至少有一个IP地址。IP 地址是一个用于 识别设备。为了更多 有关IP地址的信息,请参阅 我们的什么是IP地址页。

    2.)每个IP地址分为多个端口。当一台计算机 将数据发送到另一台计算机, 从IP地址上的端口发送 到IP地址上的端口。

    3.)一个端口一次只能由一个程序使用。

    唯一能帮到你的办法是 Port Forward . 见 here 端口转发您的路由器。

        3
  •  0
  •   Aoife    14 年前

    您必须配置您的路由器端口转发端口8080到您的PC,并使用您的路由器的外部IP地址在URL,你给贝宝。

    portfward.com .