您现在的位置是:首页 > 正文

C++ Web编程实战

2024-02-01 04:02:30阅读 2

一 CGI程序的工作方式

在浏览器向Web服务器请求一个后缀是cgi的URL或者提交表单的时候,Web服务器会把浏览器传过来的数据传给CGI程序,CGI程序通过标准输入来接收这些数据。CGI程序处理完数据后,通过标准输出将结果发往Web服务器,Web服务器再将这些信息发送给浏览器。

二 架设Web服务器Apache

1 用rpm来查看Apache是否安装

[root@localhost test]# rpm -qa|grep httpd

没有结果说明没有安装Apache

2 安装Apache

[root@localhost test]# yum -y install httpd
[root@localhost yum.repos.d]# rpm -qa|grep httpd
httpd-tools-2.4.6-88.el7.centos.x86_64
httpd-2.4.6-88.el7.centos.x86_64

3 检查httpd是否运行

[root@localhost yum.repos.d]# pgrep -l httpd

没有结果说明没有运行Apache

4 启动Apache

[root@localhost yum.repos.d]# service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@localhost yum.repos.d]# pgrep -l httpd
1173 httpd
1174 httpd
1175 httpd
1176 httpd
1177 httpd
1178 httpd

5 测试安装是否成功

浏览器输入:http://192.168.0.110/

出现下面页面说明Apache正常运行。

6 修改配置文件

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<IfModule mime_module>
    ......
    AddHandler cgi-script .cgi
    ......
</IfModule>

ScriptAlias:cgi-bin路径就是默认寻找CGI程序的地方,Apache会到这个路径下去找CGI程序并执行。

AddHandler:该指令告诉Apache,CGI程序会有哪些后缀。

7 重启Apache

service httpd restart

三 第1个C++开发的web程序

1 代码

#include <stdio.h>

int main()
{
    printf("Content-Type: text/html\n\n");
    printf("Hello cgi!\n");
    return 0;
}

2 运行

[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# cp test /var/www/cgi-bin/test.cgi

浏览器输入:http://192.168.0.110/cgi-bin/test.cgi

四 第2个C++开发的web程序

1 代码

#include <iostream>  
using namespace std;  
       
int main()  
{  
    cout << "Content-Type: text/html\n\n";  
    cout << "<html>\n";  
    cout << "<head>\n";  
    cout << "<title>Hello World - First CGI Program</title>\n";  
    cout << "</head>\n";  
    cout << "<body>\n";  
    cout << "<h2>Hello World! This is my first CGI program</h2>\n";  
    cout << "</body>\n";  
    cout << "</html>\n";  
         
    return 0;  
}

2 运行

[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# cp test /var/www/cgi-bin/test1.cgi

浏览器输入:http://192.168.0.110/cgi-bin/test1.cgi

网站文章

  • 使用计算机进行财务处理是计算机在,计算机中级考试练习题中的理论题(含答案)...

    B.储存更多信息C.存取速度更快D.虽贵,但能储存更多信息57.相对于主机来说,硬盘既是输入设备又是输出设备。(A)A.正确B.错误58.当磁盘处于写保护时,磁盘信息(A)。A.只能读不能写B.只能写...

    2024-02-01 04:02:23
  • Ubuntu16.04安装nginx(并启用SSL)

    1.安装依赖库 安装gcc g++ 的依赖库 apt-get install build-essential  apt-get install libtool 安装pcre依赖库 pt-get install libpcre3 libpcre3-dev 安装zlib依赖库 apt-get install zlib1g-dev 安装openssl apt-get install

    2024-02-01 04:02:16
  • 我从国企辞职后,凭借编程月入20K,却不敢和父母说……

    我从国企辞职后,凭借编程月入20K,却不敢和父母说……

    C++语言,作为编程行业里出现较早的编程语言,几十年来,因为语言灵活,数据结构丰富、具有结构化、平台移植力强、程序执行效率高等特点,广受关注与应用。即使新编程语言不断涌出,智能化水平越来越高,也无法挑战C++在高级编程语言里的领先地位。C++就业前景:1.C++软件开发的需求,在系统应用开发,通信领域开发,以及专业软件的开发领域,有着广阔的就业市场,有多年开发经验的C++软件工程师,基本上...

    2024-02-01 04:01:43
  • 朴素贝叶斯算法

    朴素贝叶斯算法

    机器学习(六)朴素贝叶斯算法文章目录机器学习(六)朴素贝叶斯算法一.算法介绍二.朴素贝叶斯算法在文档分类中的应用三.相关运用3.1 API介绍3.2 案例四.总结一.算法介绍读过大学本科的,在学习《概...

    2024-02-01 04:01:38
  • python 日志打印

    python 日志打印

    参考文章python loggin 教程简单样例# 保存日志到文件 example.log ,日志级别 DEBUGlogging.basicConfig(filename='example.log'...

    2024-02-01 04:01:31
  • 错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配

    错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配

    网站对接支付宝网站支付时提示验签出错 测试时是可以支付的,换了个应用提示以上错误,并不是我们的公、私钥有误,而是传输过程中出现了编码转换, 解决方法:再发起订单支付的controller注解加上以下内...

    2024-02-01 04:01:02
  • 怎么从融云服务器端发送消息,融云开发者文档

    # 什么是 targetId ?说明: targetId 为目标 id,senderUserId 为发送方 id举例: user1 为发送方,user2 为接收方,对应 targetId 值如下:us...

    2024-02-01 04:00:56
  • lodop打印控件的使用

    web打印解决方案1.生成打印模版(网页),使用window.print()预览打印模版,在浏览器中打印2.导出网页为excel文件,详见网页导出为excel3.使用lodop打印控件第一种方法和第二种方法,只能满足预先定义好打印模版得打印;且第一种直接打印网页得方法,用户无法修改打印模版,只能开发人员修改;第二种方法,用户可以在e...

    2024-02-01 04:00:49
  • 最大IO和最小IO,条带优劣

    最大IO和最小IO,条带优劣

    本文摘自: Oracle最大IO取决于连续的IO有多大,当然还有OS的限制。 比如下图: 条带大小为512KB,数据以512KB为单位分割到多块磁盘中。如果区大小为1MB,虽然这1MB对数据库来说是连续的,但是在ASM的dg中,将被分散到4块盘中,此时最大的连续数据不会超过512KB,因此最大IO也不会超过512kB. ...

    2024-02-01 04:00:21
  • Golang 学习二十(反射)

    Golang 学习二十(反射)

    文章目录1. reflect2. ValueOf3. Value.Set4. 结构体反射5. 函数反射6. 方法反射变量 ---> 一个值,一个类型,值类型数组 ---> 相同类型,多个值,长度固定,...

    2024-02-01 04:00:15