lbt162020 2021-07-29 10:36 采纳率: 68.8%
浏览 127
已结题

servlet为什么只有同网络前缀的ip地址能访问

比如说,我的ip地址是196.168.3.20,我手机的ip地址是196.168.3.13,我的电脑和手机都能打开http://192.168.3.20:8080/servlet/Request这个链接。发给别人就打不开,这是为什么

public class RequestAPIServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求的资源路径
        System.out.println("uri:"+req.getRequestURI());
        //获取请求的url
        System.out.println("url:"+req.getRequestURL());
        //获取客户端的IP地址
        System.out.println("客户端ip:"+req.getRemoteHost());
        //获取请求头
        System.out.println("请求头User-Agent:"+req.getHeader("User-Agent"));
    }
}

img

  • 写回答

8条回答 默认 最新

  • =XHG78999= 2021-07-29 12:35
    关注

    在局域网情况下,Servlet默认的注册地址是一个内网IP(类似192.168.1.23,10.84.55.1之类的),这样的话就限制了服务器的访问范围在同一局域网内,只有局域网内的地址可以访问Servlet。
    解决办法:
    1.租借一台有公网IP或者带端口映射域名的VPS,把Servlet放上去跑。优点是环境隔离,缺点是太贵。
    2.内网穿透,把Servlet跑在本地,用内网穿透这个“桥梁”来让外网链接Servlet。优点是便宜(有许多免费的),缺点是带宽低不稳定。
    3.问宽带运营商要静态IP,然后路由器层面做映射。优点是稳定,缺点是麻烦(根据我上海电信宽带这边的政策,普通家用没有静态IP,必须要至少每年万把块钱的公司光缆才可以)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 请采纳用户回复 7月30日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么