日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WEB框架原理(socket)

發(fā)布時(shí)間:2025/7/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WEB框架原理(socket) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們可以這樣理解:所有的Web應(yīng)用本質(zhì)上就是一個(gè)socket服務(wù)端,而用戶的瀏覽器就是一個(gè)socket客戶端。 這樣我們就可以自己實(shí)現(xiàn)Web框架了。

socket服務(wù)端?

socket示例 import socket sk = socket.socket() sk.bind(('127.0.0.1', 8000)) sk.listen()while 1:conn, addr = sk.accept()ret = conn.recv(10240)print(ret)conn.send(b"HTTP/1.1 200 OK\r\n\r\nooooojiba98k") 不同路勁返回不同的內(nèi)容 import socket sk = socket.socket() sk.bind(('127.0.0.1', 8000)) sk.listen()while 1:conn, addr = sk.accept()ret = conn.recv(10240)ret_str = str(ret, encoding='utf-8')res = ret_str.split('\r\n')[0].split(' ')[1]print(res)if res == '/aaa/':msg = b'123'elif res == '/bbb/':msg = b'456'else:msg = b'789'conn.send(b'HTTP/1.1 200 OK\r\n\r\n')conn.send(msg)conn.close() 不同路勁返回不同內(nèi)容(函數(shù)版) import socket sk = socket.socket() sk.bind(('127.0.0.1', 8000)) sk.listen()def aaa(res):data = 'What you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def bbb(res):data = 'What you visited was:{}'.format(res)return bytes(data, encoding='utf-8')while 1:conn,addr = sk.accept()ret = conn.recv(10240)ret_str = str(ret, encoding='utf-8')res = ret_str.split('\r\n')[0].split(' ')[1]print(res)if res == '/aaa/':msg = aaa(res)elif res == '/bbb/':msg = bbb(res)else:msg = b'Not found'conn.send(b'HTTP/1.1 200 OK\r\n\r\n')conn.send(msg)conn.close() 不同路徑返回不同內(nèi)容(反射版) import socket sk = socket.socket() sk.bind(('127.0.0.1', 8000)) sk.listen()def aaa(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def bbb(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')res_list = [('/aaa/', aaa),('/bbb/', bbb) ] while 1:# ------連接部分------conn,addr = sk.accept()ret = conn.recv(10240)# 收到的字節(jié)轉(zhuǎn)化成字符串ret_str = str(ret, encoding='utf-8')# 對(duì)請(qǐng)求行進(jìn)行切割res = ret_str.split('\r\n')[0].split(' ')[1]# -------業(yè)務(wù)處理部分--------# 使用func變量保存將要執(zhí)行的函數(shù)for i in res_list:if i[0] == res:func = i[1]breakelse:func = None# 執(zhí)行函數(shù)if func:msg = func(res)else:msg = b'404Not found'# ----回復(fù)響應(yīng)消息----conn.send(b'HTTP/1.1 200 OK\r\n\r\n')conn.send(msg)conn.close() 返回網(wǎng)頁(yè) import socket sk = socket.socket() sk.bind(('127.0.0.1', 8000)) sk.listen()def aaa(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def bbb(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def login(res):with open('login.html', 'rb')as f:data = f.read()return datares_list = [('/aaa/', aaa),('/bbb/', bbb),('/login/', login), ] while 1:# ------連接部分------conn,addr = sk.accept()ret = conn.recv(10240)# 收到的字節(jié)轉(zhuǎn)化成字符串ret_str = str(ret, encoding='utf-8')# 對(duì)請(qǐng)求行進(jìn)行切割res = ret_str.split('\r\n')[0].split(' ')[1]# -------業(yè)務(wù)處理部分--------# 使用func變量保存將要執(zhí)行的函數(shù)for i in res_list:if i[0] == res:func = i[1]breakelse:func = None# 執(zhí)行函數(shù)if func:msg = func(res)else:msg = b'404Not found'# ----回復(fù)響應(yīng)消息----conn.send(b'HTTP/1.1 200 OK\r\n\r\n')conn.send(msg)conn.close() 返回動(dòng)態(tài)網(wǎng)頁(yè) import socket import time sk = socket.socket() sk.bind(('127.0.0.1', 8800)) sk.listen()def aaa(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def bbb(res):data = 'what you visited was:{}'.format(res)return bytes(data, encoding='utf-8')def login(res):with open('login.html', 'r', encoding='utf-8')as f:data = f.read()now = str(time.time())data = data.replace('@@**@@', now)return bytes(data, encoding='utf-8')res_list = [('/aaa/', aaa),('/bbb/', bbb),('/login/', login), ] while 1:# ------連接部分------conn, addr = sk.accept()ret = conn.recv(10240)# 收到的字節(jié)轉(zhuǎn)化成字符串ret_str = str(ret, encoding='utf-8')# 對(duì)請(qǐng)求行進(jìn)行切割res = ret_str.split('\r\n')[0].split(' ')[1]# -------業(yè)務(wù)處理部分--------# 使用func變量保存將要執(zhí)行的函數(shù)for i in res_list:if i[0] == res:func = i[1]breakelse:func = None# 執(zhí)行函數(shù)if func:msg = func(res)else:msg = b'404Not found'# ----回復(fù)響應(yīng)消息----conn.send(b'HTTP/1.1 200 OK\r\n\r\n')conn.send(msg)conn.close()

?

<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Title</title> </head> <body> <h1>This is login page!</h1> <p>時(shí)間:@@**@@</p> </body> </html> HTML文件

?

轉(zhuǎn)載于:https://www.cnblogs.com/chenyibai/p/9761853.html

總結(jié)

以上是生活随笔為你收集整理的WEB框架原理(socket)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美丝袜一区二区三区 | 蜜桃视频成人在线观看 | 日日拍夜夜拍 | xxx性视频| 国产精品99久久久久久久女警 | 日韩视频一区二区三区在线播放免费观看 | 男女草比视频 | 久久精品在线免费观看 | h片网站在线观看 | 中文字幕第6页 | 有码av在线 | 精品国产成人av在线免 | av大全在线 | 日韩亚洲在线观看 | 成人免费福利 | 日韩视频在线免费 | 天天看天天爽 | 欧美精品video | 黄色在线视频网址 | 亚洲制服丝袜av | 国产三级在线观看视频 | 啪啪网站免费观看 | 亚洲精品国产无码 | 黄色大片在线看 | 骚黄网站 | 精品少妇人妻av一区二区三区 | 欧美黄网在线观看 | 国产一级免费观看 | 中文字幕一本 | 午夜免费福利小视频 | 国产黄色网络 | 国产91片| 在线麻豆 | 精品国产乱码久久久久久图片 | 国产15页 | 久久成人av | 久久不射网站 | 日本免费黄视频 | 欧美精品久久久久性色 | 影音先锋蜜桃 | 99热最新网址 | 欧美人与性动交a欧美精品 日韩免费高清视频 | 91亚洲精品久久久蜜桃网站 | 奇米影视999| 中国美女一级黄色片 | 亚洲欧洲成人精品久久一码二码 | 性一区| 蜜臀在线视频 | 久久aⅴ国产欧美74aaa | 91香蕉久久 | 国产成人无码一区二区三区在线 | 欧美极品jizzhd欧美仙踪林 | 日韩国产精品一区二区三区 | 看91| 日韩中文在线字幕 | 国产剧情av麻豆香蕉精品 | 1024视频在线 | 国产精品卡一卡二 | 99re6在线| 青青久久av北条麻妃黑人 | 林由奈在线观看 | 欧美色精品在线 | 亚洲另类视频 | 99久久夜色精品国产亚洲 | 色噜噜日韩精品欧美一区二区 | 熟女俱乐部一区二区 | 色婷婷狠狠爱 | 久久久久无码国产精品一区李宗瑞 | av黄色片 | 久久黄色视 | 亚洲成人精品av | 在线观看天堂av | 男女做那个的全过程 | 一区二区三区在线观看av | 伊人色综合久久天天 | 久久久免费电影 | 成人三级晚上看 | 欧洲影院| 久草老司机 | 日韩伦理视频 | 狠狠狠狠狠干 | 免费观看视频一区二区 | 亚洲国产精品自拍视频 | av不卡在线 | 在线免费观看黄网 | 91爱啪啪| 亚洲天堂一区二区三区四区 | 精品国产乱码久久久久久鸭王1 | 经典三级视频 | 波多野结衣中文字幕一区 | 国产97色在线 | 国产 | 激情第四色 | 国模无码大尺度一区二区三区 | 狠狠鲁视频 | 国产另类自拍 | 久久综合中文字幕 | 国产丝袜视频在线观看 | 涩涩资源站 | 亚洲国产精品成人综合久久久 |