1 web应用介绍
1.1 web
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。
1.2 web应用
Web 应用(简称 Web 应用)是用于托管 Web 应用程序、REST API 和移动后端的服务
1.3 Web应用程序
Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助谷歌,火狐等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如java,python等编写出来的程序没有什么本质上的不同。在网络编程的意义下,浏览器是一个socket客户端,服务器是一个socket服务端。
这就是web应用的本质,web应用是应用 程序,而这些应用程序是socket模块的应用
2 web应用的代码实现
2.1 web服务器:
1 import socket 2 3 def handle_request(client): 4 # 服务端接收到的数据 5 request_data = client.recv(1024) 6 print("request_data: ",request_data) 7 8 # 给客户端发送的响应消息 9 client.send("HTTP/1.1 200 OK\r\nstatus: 200\r\nContent-Type:text/html\r\n\r\n".encode("utf8")) 10 client.send("<h1>Hello, luffycity!</h1><img src=''>".encode("utf8")) 11 12 def main(): 13 # 创建服务端socket对象 14 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 15 # 绑定服务端IP和端口到套接字 16 sock.bind(('localhost',80)) 17 # 服务端等待连接的数量限制 18 sock.listen(5) 19 20 while True: 21 print("the server is waiting for client-connection....") 22 # 服务端accept接收的Conn(全双工管道) 是客户端传过来的socket对象 23 connection, address = sock.accept() 24 # 接收到客户端后的业务处理 25 handle_request(connection) 26 27 # 与客户端断开连接 28 connection.close() 29 30 if __name__ == '__main__': 31 32 main()
|
2.2 web客户端
客户端是浏览器
2.3 测试
3 web应用代码实现---数据在文件中
3.1 web服务器
1 # -*- coding:utf-8 -*- 2 import socket 3 4 def handle_request(client): 5 # 服务端接收到的数据 6 request_data = client.recv(1024) 7 print("request_data: ",request_data) 8 9 with open('index.html','rb') as f: 10 data = f.read() 11 # 给客户端发送的响应消息 12 client.send(b"HTTP/1.1 200 OK\r\nstatus: 200\r\nContent-Type:text/html\r\n\r\n"+data) 13 14 15 def main(): 16 # 创建服务端socket对象 17 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 18 # 绑定服务端IP和端口到套接字 19 sock.bind(('127.0.0.1',8000)) 20 # 服务端等待连接的数量限制 21 sock.listen(5) 22 23 while True: 24 print("the server is waiting for client-connection....") 25 # 服务端accept接收的Conn(全双工管道) 是客户端传过来的socket对象 26 connection, address = sock.accept() 27 # 接收到客户端后的业务处理 28 handle_request(connection) 29 30 # 与客户端断开连接 31 connection.close() 32 33 if __name__ == '__main__': 34 35 main()
3.2 web客户端
浏览器
3.3 数据:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello, luffycity!</h1> <img src='https://img02.sogoucdn.com/app/a/100520024/b40399e55eaf25d133681a0f08daf312'> </body> </html>
3.4 测试:
图片为什么都使用网络图片而不使用呢?
这是因为img标签无法显示本地图片,本地图片使用file协议。网络图片使用的是http协议