CGI原理解析系列之一----CGI如何获取WEB服务器数据

//gcc get_post.c -o get_post.ums;

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

int main(int argc,char *argv[])

{

size_t i = 0,n = 0;

printf("Content-Type:text/plain\n\n");

char * method = NULL;

//获取HTTP请求方法(POST/GET)

if(NULL == (method = getenv("REQUEST_METHOD")))

{

return 0;

}

if(getenv("CONTENT_LENGTH") && strcmp(method,"POST") == 0)

{

//POST 方法解析,从 STDIN_FILENO 动态获取数据

n = atoi(getenv("CONTENT_LENGTH"));

size_t length = n * sizeof(char) + 1;

char * inputdata = (char *)malloc(length);

if(inputdata)

{

memset((void*)inputdata,0,length);

if(n != read(STDIN_FILENO,inputdata,n));

{

//

}

printf("hello %s,cgi post call.\n",inputdata);

free(inputdata);

}

}

else if(getenv("QUERY_STRING") && strcmp(method,"GET") == 0)

{

//环境变量的长度有限,导致GET方法传送数据被限制

char * inputdata = getenv("QUERY_STRING");

printf("hello %s,get call.\n",inputdata);

}

else

{

printf("%s\n","bad request!");

}

fprintf(stdout,"finish,data length %d\n",n);

return 0;

}

CGI原理解析系列之一----CGI如何获取WEB服务器数据,布布扣,bubuko.com

时间: 2024-10-05 05:21:59

CGI原理解析系列之一----CGI如何获取WEB服务器数据的相关文章

CGI原理解析系列之三----CGI如何完整获取WEB服务器数据

//模拟了服务器端 httpd 进程启动 cgi的过程, //完整展现了 get,post 方法支持 //gcc -g httpd_all.c -o httpd_all.ums; #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> #define CGI_NAME "get_post.um

CGI原理解析之二------WEB服务和CGI交互数据

#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> #define    CGI_NAME "get_post.ums" #define    REQUEST_METHOD "REQUEST_METHOD=POST" #define REQUEST_PARAM

[C# 网络编程系列]专题三:自定义Web服务器

转自:http://www.cnblogs.com/zhili/archive/2012/08/23/2652460.html 前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网络中的协议有了大致的了解的, 本专题将针对HTTP协议定义一个Web服务器,我们平常浏览网页通过在浏览器中输入一个网址就可以看到我们想要的网页,这个过程中浏览器只是一个客户端,浏览器(应用层应用程序)通过HTTP协议把用户请求发送到服务端, 服务器接受到发送来的HTTP请求,然后对请求进行处理和响应

获取 web 服务器 port

Tomcat: public static String getServerPort(boolean secure) throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException { MBeanServer mBeanServer = null; if (MBeanServerFactory.findMBeanServer(null).size() > 0) {

大神必修课系列之java 分布式架构的原理解析

分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. 网络异常 有一种特殊的网络异常称为--网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信. 磁盘故障 磁盘故障是一种发生概率很高的异常. 使用冗余机制,将数据存储到多台服务器. 1.2. 超时 在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态. 可以

web服务器/cgi/html/css/js

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S架构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用.本节主要介绍这种应用的开发和移植工作. Web 典型的嵌入式Web服务器有Boa (www.boa.org)和thttpd (http://www.acme.com/software/thttpd/)等,

Java系统工具jps原理解析

Java系统工具jps原理解析 简介 当我们需要获取当前正在运行的Java进程时,我们可以通过操作系统自带的工具来筛选,如ps和netstat等.不过Java也提供了通用的工具来实现该功能,而且能够提供更加详细的信息.jps是Java Virtual Machine Process Status Too的简称,可以用来获取当前用户系统中的Java进程. 使用 jps的命令格式为 jps [ options ] [ hostid ],具体形式如下: usage: jps [-help] jps [

python web编程-CGI帮助web服务器处理客户端编程

这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里的静态页面,但是要怎么做到洞察不同用户同的输入?比如说表单提交等来产生不同的返回结果呢 一个简单的思路是web服务器把这些请求提交给另外一个程序,它接受用户输入然后处理,根据输入生成一个静态的html文件交给web服务器 复杂上面这样的流程程序就是CGI,是单独出来的 创建HTML 的CGI 应用程

web服务器原理

一.概述 Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序.Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端. 二.web服务器工作原理 假设把浏览器当作客户端 1.用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件. 2.浏览器与对端服务程序建立TCP连接. 3.浏览器将用户的事件按照HTTP协