C语言开发网站

2023-10-30

在正式开发之前,先了解一下网站的原理:

请求,处理,响应

在浏览器的network中可以看到浏览器和服务器的交互过程。

请求一个网站的本质就是咱们的浏览器和服务器交互的一个过程。

比如说咱们请求www.baidu.com,就是咱们的浏览器向服务器发送一个请求,我要请求www.baidu.com

服务器给咱们返回一个消息Response。浏览器向服务器发送请求,服务器吧咱们所请求的内容返回来。

 开发动态网站需要什么

密码明文传输是容易被劫持   参考网络原理

开发一个网站需要什么

需要一台web服务器,帮助开发者实现网路请求处理等。

如果不使用web网站服务器,需要我们自己来写socket/多线程  相当于自己做一个web服务器。

需要开发者开发服务器端程序,CGI。进行用户业务逻辑的处理。浏览器根据用户的操作向web服务器发送请求,web服务器的程序对浏览器的请求进行处理,然后把处理的结果响应给客户端。

CGI

什么是CGI?

当浏览器的一个请求到来的时候,web服务器运行服务服务器端对应的可执行程序,把浏览器的请求放到标准化输入中,可执行程序运行后,web服务器把程序的标准化输出,内容返回给浏览器。

CGI开发效率,运行效率低,但是开发原理和java,asp.net,php等是互通的,所以不用纠结cgi是过时的技术,在嵌入式设备中cgi还是应用很广的。

开发CGI流程:开发一个exe程序,放到web服务器对应目录下,浏览器访问这个exe即可运行。

运行CGI需要网站服务器。

通过scanf就可以读取到客户端的请求,通过printf返回给客户端。

现在我们可以开发第一个cgi程序

vs中新建,选择visual c++-》win32项目 选择控制台,在源文件上右键添加新建项c++,文件名后缀用.c

#include <stdio.h>

int main()

{

printf("Content-Type:text/html;charset=gbk\r\n\r\n");

printf("<font color=red>hello world</font>");

return 0;

}

生成的exe文件改名为cgi放到网站根目录下,浏览器访问,返回输出。分析原理:浏览器请求cgi服务器,后台执行cgi程序,并且把执行结果返回给浏览器。

简化开发配置:

每次修改代码都要生成,exe改为cgi,复制到网站的根目录。很麻烦。

直接生成cgi:项目右键属性目标文件扩展名“”改为.cgi

项目根目录作为网站根目录:改apache的http.conf的documentroot

cgi直接生成到网站根目录,也就是项目根目录,项目右键属性,输出目录田"./"

获取请求参数:

有的程序运行之前需要给出一些参数,网站程序不能直接从标准输入scanf,需要通过地址栏中QueryString传入

用getenv从环境变量中获取QueryString:char*queryString=getenv("QUERY_STRING);

报错

解决方案:

https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言开发网站 的相关文章

  • Java获得当前日期是星期几

    第一种方法 获取当前日期是星期几 br param date return 当前日期是星期几 public String getWeekOfDate Date date String weekDays 星期日 星期一 星期二 星期三 星期四
  • Antd Design Mobile tab去除下方蓝色边框和对tab里面的sticky布局的影响

    前言 最近在写手机端的项目 技术栈是 react Antd Desin Mobile 有个页面需要使用antd的组价tabs 然后遇到了tab下方有俩蓝色边框 一大一小 小的在上 大的在下 下方是表格 表格使用sticky布局 布局失效 百
  • Ubuntu19.04环境下的系统安装+花屏问题的解决

    说在前面 本文只做自我总结用 因为一次次重装环境到处找博客看帖实在是太麻烦了 而且网上的博客还良莠不齐 还有好多版本不兼容 本文中的某些图片是截图 某些是照片 在不能截图的情况下 图片比例可能会显示不正常 鼠标移到图片上单击放大查看就可以了
  • 区块链-技术简介

    1 什么是区块链 区块链技术是利用块链式数据结构来验证与存储数据 利用分布式节点共识算法来生成和更新数据 利用密码学的方式保证数据传输和访问的安全 利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式 简单
  • 复制CSDN的BLOG代码,去掉前面行号的方法

    我们如果从CSDN的BLOG复制代码 出现前面的行号 比如 1 文本没有缩写 2 Specify blanket rules for all elements 3 font size 12px 4 line height 160 5 fon
  • 关于java静态方法里只能调用静态变量的思考

    最近一段时间里面写了这样一个类 public class DBManager private static MySqliteHelper helper public static MySqliteHelper getHelper Conte
  • Geotools与OGC(二)----WKT坐标系信息的读取

    WKT除了有针对几何信息的描述外 也有针对空间参考的描述 以下我直接套用OGC规范中的描述 https www osgeo cn doc ogcstd ogc standard ch02 chapter1 chapter html wkb
  • 每天坐6小时以上,死亡率会增高——但站着工作就管用吗?

    此篇文章来自一篇科普类文章 作为IT行业人士 每天坐着的时间几乎都已超过了6小时 我们这些久坐的同仁儿们需要关注自己的健康 运动是我们健康的砝码哦 英文原文 Why I killed my standing desk 想必很多上班族都深受颈
  • 为什么老程序员的效率如此高?

    首先 优秀得神枪手一定是靠子弹喂出来得 没有几千上万个子弹得真枪实战 就很难在战场上一击枪杀敌人 我经常会看到一些新手程序员在写代码的时候需要频繁的去查看文档或者是百度搜索各种接口的用法 有时写一个功能要查个几十次 很多时间都浪费在了搜索上
  • upload-labs大详解

    pass1 上传一个php一句话文件 记得改成php格式 发现不允许上传php类型的 只能上传jpg gif pngl的我们打算用burp抓包 先上传jpg的 然后用burp改成php的 放包后 找到它的存储位置 用蚁剑连接 成功连接 pa
  • ReactNative常用插件使用

    项目版本介绍 目前使用的项目node版本v14 17 5 npm版本6 14 14 reactNative项目使用的模板结合typescript语法的项目模板架构 安装的方式如下 npx react native init xxx 项目名
  • TensorFlow团队成员说:深度学习的未来,在单片机的身上

    便携栗 编译自 Pete Warden s Blog量子位 出品 公众号 QbitAI Pete Warden 是谷歌TensorFlow团队成员 也是TensorFLow Mobile的负责人 常年遨游在深度学习的大海 另外 这些看上去很
  • 如何判断视频的比例(4:3/16:9)和分辨率?

    如何区分16 9和4 3 将 视频分辨率的宽度除以高度 运算结果接近1 7的是16 9 超过1 77都归类为16 9 运算结果接近1 3的4 3 例如您要上传的视频分辨率是 640 480 用640 480 1 33 那么这个就是一个4 3
  • 阿里云服务器型号大全及机型如何选择(建议收藏)

    不同的阿里云实例规格可以提供的计算能力不同 适用于不同的业务场景和使用场景 1 根据使用场景来选择 下图显示了阿里云ECS的部分通用计算和异构计算实例规格族及其对应的业务场景 简单来看 g6e和g6型能够满足一般的通用需求 对于比如金融 政
  • electron打包:electron-packager及electron-builder两种方式实现桌面端应用程序打包

    electron vue初始化 electron vue初始化命令 vue init simulatedgreg electron vue my project 我们在初始化electron vue项目时 可以选择打包方式 electron
  • vue——移动端在线预览pdf并能缩放(pdfh5)

    最近接了一个需求需要在移动端预览pdf 并切要能缩放 百度发现大多推荐vue pdf 但是vue pdf这个包 安装之后运行报错 解决之后的实现效果不符合需求需要 而且 实现缩放功能的时候 整个canvas画布整个放大 虽然有放大效果 但是
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • GLSL ES中的布局限定符(layout)

    一 存储限定字 首先需要了解存储限定字才能正确认识布局限定符 在webGL中要实现着色器和JS代码之间的数据交互 主要靠三类变量 分类的依据是存储限定字 分别是 attribute uniform varying 其中attrbute和un
  • 校招笔试面试---算法题1

    牛牛取快递 dijkstra 邻接表存图 优先队列 链接 https www nowcoder com questionTerminal 071695ed1d0b4e65b07eb969d212b92a 来源 牛客网 时间限制 1秒 空间限

随机推荐

  • 用批处理完全卸载mysql,完全卸载mysql(停止服务、卸载相关程序、删除注册表

    1 停止服务MySQL 2 卸载mysql相关的程序 3 删除注册表 运行 gt regedit machine gt system gt controlset001 controlset002 currentcontrolset gt s
  • Qt5下遍历QList的方法

    lines定义如下 QMap
  • 阿波罗无法通过链接外网

    官方提供说明 官方地址 无法连接外网的原因通常是阿波罗走到内网 通过注册中心无法连接到服务 bin bash apollo config db info apollo config db url jdbc mysql localhost 3
  • 【C++】初级—类和对象之赋值运算符重载、取地址操作符重载和const修饰的取地址运算符重载

    在上一篇中写到 一个类会产生的6种默认函数中的前三个默认函数 1 构造函数 2 析构函数 3 拷贝构造函数 4 赋值运算符重载 5 取地址操作符重载 6 拷贝构造函数 这次将着重讲解后三个函数 赋值运算符重载 运算符重载 什么是运算符重载呢
  • CSS字体的单位

    长度单位 1 像素 px 实际上是屏幕上的一个个小点 100px 100个小点 这个点 正常情况我们是看不到 如果我们把一个内容放大很多倍 就可以看到了 在pc端 电脑端 一般情况下1px 1个发光点 也是我们最常用的长度单位 它是固定单位
  • “区块链”技术在传统行业中的应用

    点击上方 中兴开发者社区 关注我们 每天读一篇一线开发者原创好文 比特币可能是一场庞氏骗局 但区块链技术却真实存在 2013年以来 比特币受到了全世界投资者的狂热追捧 虽然几经涨跌 大部分国家监管方对其态度也不甚明朗 但作为比特币底层技术的
  • react hooks实现原理(useState为例)

    一 源代码 逻辑十分绕 建议多敲几遍 let isMount true 判断是挂载还是更新 let workInProgressHook App组件对应的fiber对象 const fiber memorizedState null 当前h
  • 【NLP】T5:文本到文本转换器

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 智能指针类HasPtr

    智能指针是存储指向动态分配对象指针的类 用于控制对象的生存期 能够确保自动正确的销毁动态分配的对象 防止内存泄露 HasPtr 在其他方面的行为与普通指针一样 具体而言 复制对象时 副本和原对象将指向同一基础对象 如果通过一个副本改变基础对
  • 微信小程序车牌号码输入(虚拟键盘)

    近日在网上看到一位博主写的微信小程序 输入车牌号 有新能源 原文链接 https blog csdn net qq706352062 article details 105554453 ops request misc 257B 2522r
  • ppt复现CVPR顶会流程图

    本次目标如下图 难点在于立方体和矩阵格网的绘制 文末附机器学习绘图模板 先来绘制立方体 插入 形状 立方体 调节成如下图 再点击水平翻转 绘制矩形 多绘制几个组合成矩形格网 右键设置形状和格式 输入以下参数 调整好使其贴合立方体 如图所示
  • 全志V3S环境编译开发流程

    这里使用的是荔枝派Zero 官网上面没有带spiflash的 首先准备一张SD卡 U BOOT 首先需要配置交叉编译环境 这里就不多说了 需要的话前往Sipeed官网 Sipeed 首先获取uboot源码 git clone https g
  • vscode快捷键:定位某一行,跳转到这一行

    快捷键 Ctrl G 然后在弹出的框中输入行数就可以了 参考 https blog csdn net cvper article details 81090028
  • Spring的三种注入方式:构造方法注入,set方法注入,注解注入

    本文演示三种值注入方式和三层模式下的注解注入获取对象 首先是搭建基本的Spring运行环境导入四个基本的核心jar包和两个日志包 在src根目录下新建bean xml的配置文件 同时引入dtd约束 一 构造函数注入 在bean xml中配置

  • 分割线样式

    hr style height 2px border none border top 2px ridge green
  • vue项目 后端传给base64格式图形验证码 ,前端进行解析,回显。

    我们在实际项目中时在登录的时候 时常会遇到图形验证码 来进行验证用户操作 什么是图形验证码 图形验证码是验证码的一种 有防止黑客对某一特定注册用户用程序暴力破解私人信息 恶意破解密码 刷论坛灌水的作用 票 图形验证码是一种区分用户是计算机还
  • SpringBoot底层原理

    SpringBoot底层原理 一 SpringBoot是什么 二 SpringBoot核心原理 三 springboot启动原理 一 SpringBoot是什么 想要了解springboot底层原理必须要先知道springboot是什么 作
  • 计算机视觉领域关注的会议和期刊

    原本为给师弟师妹总结的自己经验 节省计算机视觉领域大家看什么论文和去哪里看论文的困惑 一 会议论文 视觉的领域主要关注的三大顶会论文 CVPR ICCV ECCV 搜索途径 1 CVPR和ICCV都是IEEE库 可以在IEEE explor
  • QT中ui文件生成关联的C++类

    在VS2008中给对话框资源添加关联的C 类时 可通过右键菜单 添加类 直接添加关联的C 类 但QT中不支持这样的操作 在QT中在创建界面ui时 可手动也可自动创建ui文件关联的C 类 分别如下所示 一 自动创建ui文件和对应的C 类 项目
  • C语言开发网站

    在正式开发之前 先了解一下网站的原理 请求 处理 响应 在浏览器的network中可以看到浏览器和服务器的交互过程 请求一个网站的本质就是咱们的浏览器和服务器交互的一个过程 比如说咱们请求www baidu com 就是咱们的浏览器向服务器