诚意
诚意如你,当一诚的态度对待

导航

 

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()
web-server

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>
index.html

3.4  测试:

 图片为什么都使用网络图片而不使用呢?

这是因为img标签无法显示本地图片,本地图片使用file协议。网络图片使用的是http协议

posted on 2018-10-20 21:31  诚意  阅读(135)  评论(0编辑  收藏  举报