用C#(C++)Socket后台编写自己的IIS服务器代替IIS
本文触及到Socket TCP/IP编程方面的知识,其实这是很简单的内容,大家看不明的地方大可以先往下读,以后再看一遍,可能会觉得很简单。
很多人写网站用惯了IIS和Tomcat这些高级的后台来做网站后台服务,然而,在这些后台还没有问世之前,人们是怎么编写网站的呢?他们底层共同遵守的准则和标准又是什么呢?
这就是http协议和html、js、css标准。这些都是国际统一的标准,和.net、java、php这些语言完全没有关系的。比例如下面一段代码:
<html>
<body>
<form runat="server" id="form1">
<%
string str_response="hello world";
........................................
Response.Write(str_response);
%>
<asp:Button ID="bn_1" runat="Server" Text="点击"/>
</form>
</body>
</html>
长长的一段代码最终会被解析成下面这样
<html>
<body>
<form id="form1" action="">
hello world
<input type="submit" value="点击" name="bn_1"/>
</form>
</body>
</html>
IIS帮助我们,将<%%>里面的内容转化成要输出的内容,同时将<asp:这些标签,转化为相应的标签(这里是<input>标签),这些在html里面是非标准的标签,属于iis规定的标签,iis有这个责任去将这些标签转化为标准的标签返回给客户。
上面这些是基础,相信很多编写过网站的人都知道是怎么一回事,下面回到正题。
下面这段代码可能大家就很少接触了:
GET /siteserver/mypage.youlike?h_username=myname HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152;
.NET CLR 3.5.30729)
Host: 127.0.0.1:45632
Content-Length: 93
Connection: Keep-Alive
Cache-Control: no-cache
其实这很简单,这就是客户端IE打开一个网址http://127.0.0.1:45632/siteserver/mypage.youlike?h_username=myname,http://127.0.0.1:45632这个网站的后台收到的全部协议代码。
这些字符串用换行符相隔。
其中127.0.0.1:45632是一个标准的站点的地址,127.0.0.1是IP,45632是服务端监听的端口。
User-Ag
相关文档:
C/C++返回内部静态成员的陷阱
陈皓
背景
在我们用
C/C++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困
扰和很多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你 ......
来了csdn很久了,都没写过文章,有点过意不去,于是逼着自己这个懒人写了一下一些保留在个人笔记本上的小点滴,希望不会误导大家。。。。。一下只是笔记中的一小部分,以后有空在继续放上来。。。。。。
1 虚函数是为了继承接口和默认行为。纯虚函数只是继承接口,行为必须重新定义。
2 集和多集的区别:set支持唯 ......
C++中的Static有两个作用。
1、 静态局部变量
静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域在该函数内,只能在定义该变量的函数内使用该变量。 允许对构造类静态局部量赋初值,若未赋以初值,则由系统自动赋以0值。
void fun1()
{
static int i = 0;
......
#include<stdio.h>
#include<stdlib.h>
#define MAX 41
static int i=0;
int main(void)
{
FILE *fp;
char words[MAX];
if((fp=fopen("words","a+"))==NULL)
{
fprintf(stdout,"Can't open \" word\" file\n");
exit(1);
}
puts("Enter words to add to the file,press the enter.");
......
1. 打开新的窗口并传送参数:
传送参数:
response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
接收参数:
string a = Request.QueryString("id");
string b = Request.QueryString( ......