web(World Wide Web)即全球廣域網,也稱爲萬維網,它是一種基於超文本和HTTP的、全球性的、動態交互的、跨平臺的分佈式圖形信息系統。html
Web 應用(簡稱 Web 應用)是用於託管 Web 應用程序、REST API 和移動後端的服務java
Web應用程序是一種能夠經過Web訪問的應用程序,程序的最大好處是用戶很容易訪問應用程序,用戶只須要有瀏覽器便可,不須要再安裝其餘軟件。應用程序有兩種模式C/S、B/S。C/S是客戶端/服務器端程序,也就是說這類程序通常獨立運行。而B/S就是瀏覽器端/服務器端應用程序,這類應用程序通常藉助谷歌,火狐等瀏覽器來運行。WEB應用程序通常是B/S模式。Web應用程序首先是「應用程序」,和用標準的程序語言,如java,python等編寫出來的程序沒有什麼本質上的不一樣。在網絡編程的意義下,瀏覽器是一個socket客戶端,服務器是一個socket服務端。python
這就是web應用的本質,web應用是應用 程序,而這些應用程序是socket模塊的應用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()
|
客戶端是瀏覽器編程
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()
瀏覽器後端
<!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>
圖片爲何都使用網絡圖片而不使用呢?瀏覽器
這是由於img標籤沒法顯示本地圖片,本地圖片使用file協議。網絡圖片使用的是http協議服務器