如何从外部访问在我的电脑上运行的Java servlet?

Fra*_*ank 3 networking routing servlets localhost ip-address

我使用Netbeans6.7编写一个servlet,当它运行时,它打开一个浏览器窗口,其中包含以下地址:http:// localhost:8080/My_App/Test_Servlet,我用我的IP地址替换了"localhost",现在它看起来像这个:http://192.???.1.?? : 8080/My_App/Test_Servlet,但我试图从家外的另一台电脑上访问它,它无法读取任何内容,我不知道是否需要更改Windows Fire Wall设置允许外部流量,它是一个Paypal IPN应用程序,所以我打电话给Paypal,他们说他们无法访问:http://192.???.1.?? : 8080/My_App/Test_Servlet

我应该做些什么来允许来自"paypal.com"的流量访问"My_App/Test_Servlet"?


部分成功!在我阅读文章后,设置静态IP,端口转发,我可以从Paypal的测试IPN页面发送一条消息,当我尝试发送第二个消息时,它无法通过,所以我停止启动我的servlet,然后我可以发送另一个消息,第二个消息再次失败,为什么?坦率

T.J*_*der 5

我无法决定是否将此投票给serverfault.com或superuser.com,所以哎呀,我在这里回答:

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

允许来自外部世界的电话到您的电脑:

  • 您的PC需要在您预期其中一个电话时(如果它是PayPal IPN,那几乎总是如此)
  • 您必须拥有Internet连接的静态IP地址,或使用动态DNS服务
  • 您必须向PayPal提供您的互联网连接的静态IP地址(不是您的PC的内部连接)或您使用动态服务设置的DNS名称
  • 您必须配置路由器以将请求转发到您的计算机的静态公共地址(因为您的路由器可能支持多台计算机,并且需要知道哪个特定的应该处理请求)
  • 如果您使用Windows防火墙等软件防火墙,则必须告诉它它可以接受该端口上的请求.

不要让那看起来令人生畏.这不是微不足道的,但并不难.但请注意,只要您告诉路由器将端口转发给您,您就可以绕过路由器可能提供的大部分或全部保护,以防止对您计算机的攻击(在该端口上;通常是攻击者端口扫描) .它可能没有提供任何,但它可能提供一些.