Asp.net笔记
一、Socket类
进行网络编程的类,可以在两台计算机之间进行网络通讯
过程:
向服务器发送指令:
GET /index.html HTTP/1.1
Host:127.0.0.1:8080
回车空行
二、浏览器是什么
浏览器就是一个Socket网络客户端,帮助用户请求网站服务器上的内容并且将返回的内容渲染为图形化内容
浏览器的过程:
用户在浏览器输入网址,浏览器向DNS服务器发出Socket请求,
服务器把请求的内容返回给浏览器,
浏览器将内容进行解析并渲染绘制成页面展现,
如果遇到img、css、js等文件就再次发送请求,服务器返回数据,
继续进行渲染,直到最终请求完成。
三、编写网站服务器
步骤:
1,使用Socket启动监听
Socket serverSocket = new Socket(SocketType.Stream,ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(IPAddress.Any,8080));
serverSocket.Listen(10);
2,调用Socket.Accept()阻塞等待用户请求,当一个用户请求过来后Accept()方法返回一个新的Socket对象
每个Socket代表一个连接通道
3,进行通信
四、静态网站服务器
服务器路径和请求为固定的页面,请求的内容也是固定的
五、动态网站内容
在请求的时候写上
/add?i=1&j=2 对i和j进行相加运算
?前面为处理程序路径,?后面为请求的参数,以&分隔多个参数
六、请求处理响应
浏览器(收集用户操作)——服务器(对用户请求进行处理)——浏览器(解析、显示)
向服务器发送请求 想浏览器返回响应
服务器不知道浏览器什么时候关闭,他们之间是短暂的网络连接
除非浏览器请求,否则服务器无法主动向浏览器发送数据!!!
七、Web服务器和ASP.NET
web应用程序:一般处理程序
一般处理程序与html页面联系起来靠<form action="XX.ashx"></form>
Web服务器帮助处理静态文件的请求;
对于动态内容,web服务器帮着进行http层面的处理,具体请求由ASP.NET程序负责
八、一般处理程序
示例代码:
context.Response.ContentType = "text/html";
string name = context.Request["name"];
context.Response.Write(name+"<font color='red'>你好"</font>);
过程:
每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,在这里通过访问context.Request获得访问者的请求参数。
然后在ProcessRequset中通过context.Response向浏览器发回数据
注意:
建立项目的时候选择网站和webApplication的区别?
如何避免每次都手动输入地址栏?
在属性里设定定向网站
调试方式和非调试方式的不同用途:
调试可以设置断点;
非调试方式启动(项目停止运行后还可以访问)可以修改
cs代码重新生成就可以起作用,静态文件的修改不需要重新生成
九、表单的提交
<form></form>表单元素中的有name属性的input、select、textarea等的元素的value值会自动调教给服务器
通过设定action属性,来指定提交给哪个ashx程序
注意:name才是提交给服务器用的,可以重复
服务器端用context.Request["username"];来根据表单项的name来获得提交的属性值
checkbox没选中为null,选中为“on”
radiobutton,同name的为一组
当input=submit的时候,只有被点击的按钮(要有name)的value才会被提交
只有在form标签内的标签才可能被提交到服务器,之外的会被忽略!!
十、favicon.ico请求
大部分浏览器的默认请求,如果网站服务器的目录下有这个文件,就会被拿来当做标签的小图标
收藏夹里也支持
十一、http协议
1,连接(Connection)
浏览器和服务器之间传输数据的通道。
一般请求完毕就关闭,http不保持连接。
好处:可以提高并发请求的效率
缺点:因为建立连接的速度问题,(每次请求html文本和图片是独立的两次连接)
降低的浏览器响应的速度
2,请求(Request)
浏览器向服务器发送的“请求”信息,包含了请求的类型、数据和浏览器的信息(语言、浏览器版本等)
GET /请求的地址 HTTP/1.1 表示向服务器用GET方式请求首页,使用HTTP/1.1协议
User-Agent(简称UA) 为浏览器的版本信息。通过这个信息可以读取浏览器是IE或者什么
Referer 当前页面的上一个页面(来源、所属页面)
Accept-Encoding 服务器支持什么压缩算法。
Accept-Language 浏览器支持什么语言
3,响应(Response)
服务器对浏览器请求的返回的数据,包含是否成功、错误码等。
浏览器不知道服务器的处理过程,仅仅是拿到结果进行渲染输出
响应码举例:
“200” : OK;
“302” : Found 暂时转移,用于重定向, Response.Redirect()会让浏览器再请求一次重定向的地址,
重定向的请求是Get方式;
"404" : Not Found 未找到。
500 服务器错误(一般服务器出现异常),通过报错信息找出异常的点。
403: 客户端访问未被授权。
304 (服务器把文件的修改日期通过Last-Modified返回给浏览器,浏览器缓存这个文件,
下次向服务器请求这个文件的时候,通过If-Modified-Since问服务器说“我本地的文件的修改日期是。。。”,
服务器端如果发现文件还是那个文件,则告诉浏览器(304 Not Modified)文件没修改,还用本地的吧。ctrl+f5)。
总结:2xx:没问题;3xx代表浏览器需要干点啥;4***浏览器的问题;5xx服务器错误
4,处理(Process)
服务器通过Content-Type告诉客户端响应的数据的类型,方便给浏览器按照类型进行响应
text/html HTML样式
text/plain 纯文本样式
十二、Get和Post
一个form默认有Method属性,默认的value是Get
<form action="指向的ashx程序" method="get或者post"></form>
get(默认值)是通过URL传递表单值,post传递的表单值是隐藏到http报文体中,url看不到
(get会直接将提交的内容显示到地址栏,post不会)
两者的区别:
1,get通过url传递,在地址栏能够看到值,post是通过报文体不会显示到地址栏
2,get传递的数据量是有限的,post没有限制
3,get方式的结果页面可以转发给另一个浏览器直接读取,post不行(另一个角度的安全性)
注意:
只要在地址栏中输入一个网址回车访问,那么