在电脑上开发一套HTTP服务器的程序在调试时,在本机内访问正常,但是在本机外访问就不正常,外部客户端无法访问或无法连接到本机的服务器的问题,这可能涉及网络配置、防火墙、端口转发或服务绑定等问题,在这里提供了解决方案可以查阅。

文章目录

  • 问题描述
    • 正常访问
    • 无法访问
  • 解决问题
    • 方案一
      • 关闭网络防火墙
    • 方案二
      • 改变网络防火墙规则
      • HttpListenerException: 拒绝访问问题

如你会C#编程开发桌面程序,想自己打造一个HTTP服务器,
可参考 《一个简单的http服务器项目开发过程详解》

问题描述

在电脑上,开启HTTP服务器,也就是简单的Web服务器,

遇到的问题,情况如下

正常访问

设置的本地IP如 localhost, 或者127.0.0.1,在本机的浏览器能正常访问,

无法访问

而在外部的客户端(电脑)连接本机局域网后却发现无法正常访问,

访问不了,提示无法访问此页面,如下图
图片描述

温馨提示
请点击关注,确认您是人类用户而非网络自动化爬取程序。

放心关注
您的关注操作仅用于验证身份,不会产生其他影响。您的关注记录仅代表您曾访问过这里。

以下是以操作的电脑系统是Windows 11为例

解决问题

要解决问题,现知道有两个方案

方案一

关闭网络防火墙

打开电脑桌面的菜单,在最上面的搜索输入框,输入控制面板,如下图
图片描述

找到Windows Defender 防火墙,点击它,

然后再找到启用或关闭Windows Defender 防火墙,并点击,出现如下图
图片描述

优点:很容易关闭或开启
缺点:关闭后,本机裸奔,上网不安全

此方案,随着将来系统更新,可能不再容易找到,或被系统隐藏,或彻底消失!

方案二

改变网络防火墙规则

打开电脑桌面的菜单,选择设置,找到并选择网络和Internet
或者,
在电脑桌面的任务栏上,找到右侧的网络图标,用鼠标右键点击,会弹出选项,依次选择网络和Internet

找到高级网络设置,如下图
图片描述
往下滚动,找到相关设置,Windows防火墙,点击它,如下图
图片描述
打开后出现的标题是防火墙和网络保护,在下面有一些文字都是可点击的,

其中一个高级设置,点击它,如下图
图片描述

这会打开一个高级安全WIndows Defender防火墙窗口,

在左侧的选中入站规则,然后,在右侧点击新建规则,弹出一个对话框,就选择端口,如下图,
图片描述
点击下一页,选择TCP,和 特定本地端口,填入IP地址中的端口号8000,如下图
图片描述

实际上应填入你的IP地址中使用的端口号

点击下一页,默认选择允许连接,不用管,如下图
图片描述
点击下一页,是作用域,默认全勾选即可,不懂的话,也不用管,如下图
图片描述
点击下一页,是不是感觉页数有点多,到此了,这是最后一步,

输入名称描述,输入内容要自己能理解就行,是为了方便下次能识别和找到,如下图
图片描述
点击完成,在入站规则列表中,出现了刚才新增的规则,如下图
图片描述
到这里,想必是起作用了,那就重启你的HTTP服务器看看,访问是否正常了。

优点:保持上网安全
缺点:步骤多,操作麻烦,要使用的时候就开启,不使用时就关闭

此方案,步骤多,对非计算机专业的用户来说理解这些操作不容易,只照着去做。

HttpListenerException: 拒绝访问问题

当你选择最优项方案二:

可能遇到还是访问不了,提示无法访问此页面,如下图
图片描述

设置了IP,应该是IP访问权限问题,

在开发中使用HttpListener类搭建HTTP服务器,运行若报错信息如下:

HttpListenerException: 拒绝访问

这也是类似的IP访问权限问题,

还得继续解决,

在电脑桌面打开菜单,搜索框输入命令提示符,以管理员身份运行,

也就是打开CMD终端管理员程序窗口,输入如下命令

netsh http add urlacl url=http://192.168.1.120:1028/ user=Everyone

将此IP地址192.168.1.120:1028替换成你的,添加到白名单

当输出已成功添加 URL 保留项,说明OK了,如下图

再重启你的HTTP服务器试试,可否正常访问了,

不过,上面的命令执行后,之前的本地IP和端口访问就会被拒绝,只需要从白名单中删除

打开CMD终端管理员程序窗口,输入删除命令如下

netsh http delete urlacl url=http://192.168.1.120:1028/

就写到这里,以上内容已整理完毕,建议收藏以防遗忘。

图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93378.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93378.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93378.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双指针和codetop2(最短路问题BFS)

双指针和codetop21.双指针1.[复写0](https://leetcode.cn/problems/duplicate-zeros/)2.动态规划1.[珠宝的最高价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/)2.[解码方法](https://leetcode.cn/problems/decode-ways/)3.[下降路径最小和](ht…

基于K邻近算法(KNN)的数据回归预测模型

一、作品详细简介 1.1附件文件夹程序代码截图 全部完整源代码,请在个人首页置顶文章查看: 学行库小秘_CSDN博客https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夹说明 1.2.1 main.m主函数文件 该MATLAB代码实现了一个基于…

【123页PPT】化工行业数字化解决方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808859/91654005 资料解读:【123页PPT】化工行业数字化解决方案 详细资料请看本解读文章的最后内容。化工行业作为国民经济的重要支柱之…

c++--文件头注释/doxygen

文件头注释 开源项目: /*** file robot_base.cpp* author Mr.Wu* date 2025-05-28* version 1.0.0* brief Robot basic drive to communicate with controller** copyright Copyright (c) 2025 google.** Licensed under the Apache License, Version 2.…

【教程】笔记本安装FnOS设置合盖息屏不休眠

重装FnOS好几次了,合盖后屏幕关闭但不休眠的问题每次都要网上找参差不齐的教程,麻烦死了,索性记录一下方便以后复制粘贴。 使用root登录 sudo -i修改系统配置文件编辑logind.conf文件: 打开终端,输入以下命令以编辑log…

深入解析 Monkey OCR:本地化、多语言文本识别的利器与实践指南

在信息爆炸的时代,从图片、扫描文档中高效提取结构化文本的需求日益迫切。OCR(光学字符识别)技术成为解决这一问题的核心工具。尽管市面上有 Abbyy FineReader、Adobe Acrobat 等商业巨头,以及 Tesseract、PaddleOCR 等开源方案&a…

动态规划法 - 53. 最大子数组和

什么是动态规划法? 简单说,动态规划(Dynamic Programming,简称 DP) 是一种**「把复杂问题拆解成小问题,通过解决小问题来解决大问题」**的方法。 核心思路有两个: 1.拆分问题:把原问…

STM32CUBEMX配置stm32工程

1.新建工程2.选择芯片3.配置各种片上外设和时钟4.创建工程5.根据文件内容进行修改工程注意:最好根据工程规范来做,因为有时我们需要更改配置并重新生成,如果不按规范来会导致部分代码会被系统清除,在工程中中有很多成对的BEGIN和E…

Day07 缓存商品 购物车

缓存菜品问题说明用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。结果:系统响应慢,用户体验差实现思路通过 Redis 来缓存菜品数据,减少数据库查询操作。缓存逻辑分…

Jenkins(集群与流水线配置)

Jenkins(集群与流水线配置) Jenkins集群 集群化构建可以提升构建效率,也可以并发在多台机器上执行构建。 安装前提:内存至少512MB、Java 17 以上、Maven环境、Git环境 配置集群步骤 配置节点菜单新建节点查看节点配置状态 新建完节…

深入剖析ROS参数服务器通信机制 ——共享全局数据的“云端仓库”实现原理

​1. 核心概念:分布式数据共享容器​ ​定位​:ROS参数服务器(Parameter Server)是ROS架构中的全局共享存储系统,相当于机器人的“云端仓库”。 ​作用​: 存储多节点共享的静态配置参数(如机器…

21.AlexNet

虽然LeNet在手写数字识别上取得了不错的结果,但是他在对于更大的数据集效果就十分有限。 一方面,对于更大尺寸的图像效果有限 另一方面,对于更多分类的任务效果有限 自LeNet后的十几年,计算机视觉领域步入寒冬,神经网络…

Shell脚本-条件判断相关参数

一、前言在 Shell 脚本编程中,条件判断 是实现流程控制的核心机制之一。无论是判断文件是否存在、字符串是否相等,还是数值大小比较,都离不开条件判断语句。本文将带你全面掌握 Shell 脚本中与条件判断相关的参数和语法,包括&…

何为“低空经济”?

低空经济(Low-Altitude Economy)是指以1000米以下空域(部分场景可延伸至3000米)为核心,以无人机(UAV)、电动垂直起降飞行器(eVTOL)、直升机、通航飞机等航空器为载体&…

线性代数 | 直观理解一些概念

注:本文为 “线性代数 直观理解概念” 相关合辑。 英文引文,机翻未校。 中文引文,略作重排。 如有内容异常,请看原文。 直观理解线性代数的一些概念 2015-03-06 Updated: 2015-05-09 本文介绍矩阵的一些相关概念的直观理解&…

Spring AI 集成阿里云百炼平台

Spring AI 集成阿里云百炼平台 创建API key 在阿里云百炼平台创建API key设置系统变量。阿里云百炼 api key 创建 API 参考 官方API地址:https://bailian.console.aliyun.com (1)在阿里云百炼控制台,选择API参考菜单。 API…

Codeforces Round 859 (Div. 4) A - D + F - G2 题解

Codeforces Round 859 (Div. 4) A - D F - G2 题解A. Plus or Minus&#xff08;800 分难度&#xff09; 思路&#xff1a; 直接 if - else 判断。 参考代码&#xff1a; #include<bits/stdc.h> using namespace std; void solve(){int a, b, c;cin >> a >&g…

【Java web】Servlet 详解

一、什么是 Servlet&#xff1f;—— 你不知道的 "网页服务员"想象你走进一家网红书店&#xff08;比如 "在线 Java 书店"&#xff09;&#xff0c;想买一本《Java 编程思想》。你告诉前台服务员你的需求&#xff0c;服务员去仓库找书、包装、收款&#xf…

数据库Microsoft Access、SQL Server和SQLite三者对比及数据库的选型建议

SQLite本质是代码库&#xff0c;Access是单文件桌面DB&#xff0c;SQL Server是正经的C/S架构数据库。这就像比较自行车、家用轿车和卡车&#xff0c;完全不同的设计目标。 核心区别对比表特性Microsoft AccessSQL ServerSQLite类型桌面DBMS (文件型)客户端/服务器 RDBMS嵌入式…

【C++】默认构造函数,参数化构造函数,拷贝构造函数,拷贝赋值运算符, 移动构造函数 ,移动赋值运算符

1. 默认构造函数 (Default Constructor) 作用&#xff1a; 无参创建对象 签名&#xff1a; ClassName() 特点&#xff1a; ①无参数或所有参数都有默认值 ②若未声明任何构造函数&#xff0c;编译器自动生成&#xff08;空实现&#xff09; ③用于容器默认初始化&#xff08;如…