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 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题