当前位置: 首页 > news >正文

网站空间和域名价格seo友情链接

网站空间和域名价格,seo友情链接,游戏运营备案官方网站,企业邮箱china本教程的知识点为:操作系统 1. 常见的操作系统 4. 小结 ls命令选项 2. 小结 mkdir和rm命令选项 1. mkdir命令选项 压缩和解压缩命令 1. 压缩格式的介绍 2. tar命令及选项的使用 3. zip和unzip命令及选项的使用 4. 小结 编辑器 vim 1. vim 的介绍 2. vim 的工作模式 …

本教程的知识点为:操作系统 1. 常见的操作系统 4. 小结 ls命令选项 2. 小结 mkdir和rm命令选项 1. mkdir命令选项 压缩和解压缩命令 1. 压缩格式的介绍 2. tar命令及选项的使用 3. zip和unzip命令及选项的使用 4. 小结 编辑器 vim 1. vim 的介绍 2. vim 的工作模式 3. vim 的末行模式命令 4. vim 的常用命令 获取进程编号 1. 获取进程编号的目的 2. 获取当前进程编号 3. 获取当前父进程编号 4. 小结 线程执行带有参数的任务 1. 线程执行带有参数的任务的介绍 2. args参数的使用 3. kwargs参数的使用 4. 小结 1. s锁的概念 2. s锁示例 3. 避免s锁 4. 小结 端口和端口号的介绍 1. 问题思考 2. 什么是端口 3. 什么端口号 4. 端口和端口号的关系 HTTP 协议 1. HTTP 协议的介绍 2. HTTP 协议的作用 3. 浏览器访问web服务器的通信过程 4. 小结 静态Web服务器-返回固定页面数据 1. 开发自己的静态Web服务器 2. 静态Web服务器-返回固定页面数据的示例代码 3. 小结 静态Web服务器-返回指定页面数据 静态Web服务器-面向对象开发 1. 以面向对象的方式开发静态Web服务器 2. 静态Web服务器-面向对象开发的示例代码 3. 小结 静态Web服务器-命令行启动动态绑定端口号 修改闭包内使用的外部变量 1. 修改闭包内使用的外部变量 2. 小结 装饰器 1. 装饰器的定义 property属性 1. property属性的介绍 2. 装饰器方式 3. 类属性方式 4. 小结 深拷贝和浅拷贝 1. 浅拷贝 2. 深拷贝 3. 浅拷贝和深拷贝的区别 4. 总结 匹配多个字符 1. 匹配多个字符 示例1:* 示例2:+ 示例3:?

完整笔记资料代码:https://gitee.com/yinuo112/Backend/tree/master/Python/嘿马python高级进阶全体系教程/note.md

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

静态Web服务器-返回固定页面数据

学习目标

  • 能够写出组装固定页面数据的响应报文

1. 开发自己的静态Web服务器

实现步骤:

  1. 编写一个TCP服务端程序
  2. 获取浏览器发送的http请求报文数据
  3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
  4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。

2. 静态Web服务器-返回固定页面数据的示例代码

import socketif __name__ == '__main__':# 创建tcp服务端套接字tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口号复用, 程序退出端口立即释放tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)# 绑定端口号tcp_server_socket.bind(("", 9000))# 设置监听tcp_server_socket.listen(128)while True:# 等待接受客户端的连接请求new_socket, ip_port = tcp_server_socket.accept()# 代码执行到此,说明连接建立成功recv_client_data = new_socket.recv(4096)# 对二进制数据进行解码recv_client_content = recv_client_data.decode("utf-8")print(recv_client_content)with open("static/index.html", "rb") as file:# 读取文件数据file_data = file.read()# 响应行response_line = "HTTP/1.1 200 OK\r\n"# 响应头response_header = "Server: PWS1.0\r\n"# 响应体response_body = file_data# 拼接响应报文response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body# 发送数据new_socket.send(response_data)# 关闭服务与客户端的套接字new_socket.close()

3. 小结

  1. 编写一个TCP服务端程序
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 循环接受客户端的连接请求while True:conn_socket, ip_port = tcp_server_socket.accept()
  1. 获取浏览器发送的http请求报文数据
client_request_data = conn_socket.recv(4096)
  1. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body
conn_socket.send(response_data)
  1. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。
conn_socket.close()

静态Web服务器-返回指定页面数据

学习目标

  • 能够写出组装指定页面数据的响应报文

1. 静态Web服务器的问题

问题

目前的Web服务器,不管用户访问什么页面,返回的都是固定页面的数据,接下来需要根据用户的请求返回指定页面的数据

返回指定页面数据的实现步骤:

  1. 获取用户请求资源的路径
  2. 根据请求资源的路径,读取指定文件的数据
  3. 组装指定文件数据的响应报文,发送给浏览器
  4. 判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器

2. 静态Web服务器-返回指定页面数据的示例代码

import socketdef main():# 创建tcp服务端套接字tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口号复用, 程序退出端口立即释放tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)# 绑定端口号tcp_server_socket.bind(("", 9000))# 设置监听tcp_server_socket.listen(128)while True:# 等待接受客户端的连接请求new_socket, ip_port = tcp_server_socket.accept()# 代码执行到此,说明连接建立成功recv_client_data = new_socket.recv(4096)if len(recv_client_data) == 0:print("关闭浏览器了")new_socket.close()return# 对二进制数据进行解码recv_client_content = recv_client_data.decode("utf-8")print(recv_client_content)# 根据指定字符串进行分割, 最大分割次数指定2request_list = recv_client_content.split(" ", maxsplit=2)# 获取请求资源路径request_path = request_list[1]print(request_path)# 判断请求的是否是根目录,如果条件成立,指定首页数据返回if request_path == "/":request_path = "/index.html"try:# 动态打开指定文件with open("static" + request_path, "rb") as file:# 读取文件数据file_data = file.read()except Exception as e:# 请求资源不存在,返回404数据# 响应行response_line = "HTTP/1.1 404 Not Found\r\n"# 响应头response_header = "Server: PWS1.0\r\n"with open("static/error.html", "rb") as file:file_data = file.read()# 响应体response_body = file_data# 拼接响应报文response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body# 发送数据new_socket.send(response_data)else:# 响应行response_line = "HTTP/1.1 200 OK\r\n"# 响应头response_header = "Server: PWS1.0\r\n"# 响应体response_body = file_data# 拼接响应报文response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body# 发送数据new_socket.send(response_data)finally:# 关闭服务与客户端的套接字new_socket.close()if __name__ == '__main__':main()

3. 小结

  1. 获取用户请求资源的路径
request_list = client_request_conent.split(” ”,  maxsplit=2)request_path = request_list[1]
  1. 根据请求资源的路径,读取请求指定文件的数据
with open("static" + request_path, "rb") as file:file_data = file.read()
  1. 组装指定文件数据的响应报文,发送给浏览器
response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_bodyconn_socket.send(response_data)
  1. 判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器
try:# 打开指定文件,代码省略...except Exception as e:conn_socket.send(404响应报文数据)

静态Web服务器-多任务版

学习目标

  • 能够写出多线程版的多任务web服务器程序

1. 静态Web服务器的问题

目前的Web服务器,不能支持多用户同时访问,只能一个一个的处理客户端的请求,那么如何开发多任务版的web服务器同时处理 多个客户端的请求?

可以使用多线程,比进程更加节省内存资源。

多任务版web服务器程序的实现步骤:

  1. 当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞。

  2. 把创建的子线程设置成为守护主线程,防止主线程无法退出。

2. 静态Web服务器-多任务版的示例代码

import socket
import threading# 处理客户端的请求def handle_client_request(new_socket):# 代码执行到此,说明连接建立成功recv_client_data = new_socket.recv(4096)if len(recv_client_data) == 0:print("关闭浏览器了")new_socket.close()return# 对二进制数据进行解码recv_client_content = recv_client_data.decode("utf-8")print(recv_client_content)# 根据指定字符串进行分割, 最大分割次数指定2request_list = recv_client_content.split(" ", maxsplit=2)# 获取请求资源路径request_path = request_list[1]print(request_path)# 判断请求的是否是根目录,如果条件成立,指定首页数据返回if request_path == "/":request_path = "/index.html"try:# 动态打开指定文件with open("static" + request_path, "rb") as file:# 读取文件数据file_data = file.read()except Exception as e:# 请求资源不存在,返回404数据# 响应行response_line = "HTTP/1.1 404 Not Found\r\n"# 响应头response_header = "Server: PWS1.0\r\n"with open("static/error.html", "rb") as file:file_data = file.read()# 响应体response_body = file_data# 拼接响应报文response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body# 发送数据new_socket.send(response_data)else:# 响应行response_line = "HTTP/1.1 200 OK\r\n"# 响应头response_header = "Server: PWS1.0\r\n"# 响应体response_body = file_data# 拼接响应报文response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body# 发送数据new_socket.send(response_data)finally:# 关闭服务与客户端的套接字new_socket.close()# 程序入口函数def main():# 创建tcp服务端套接字tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口号复用, 程序退出端口立即释放tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)# 绑定端口号tcp_server_socket.bind(("", 9000))# 设置监听tcp_server_socket.listen(128)while True:# 等待接受客户端的连接请求new_socket, ip_port = tcp_server_socket.accept()print(ip_port)# 当客户端和服务器建立连接程,创建子线程sub_thread = threading.Thread(target=handle_client_request, args=(new_socket,))# 设置守护主线程sub_thread.setDaemon(True)# 启动子线程执行对应的任务sub_thread.start()if __name__ == '__main__':main()

3. 小结

  1. 当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞。
while True:conn_socket, ip_port = tcp_server_socket.accept()# 开辟子线程并执行对应的任务sub_thread = threading.Thread(target=handle_client_request, args=(conn_socket,))
  1. 把创建的子线程设置成为守护主线程,防止主线程无法退出。
# 开辟子线程并执行对应的任务sub_thread = threading.Thread(target=handle_client_request, args=(conn_socket,))sub_thread.setDaemon(True) # 设置守护主线程sub_thread.start()

文章转载自:
http://croci.jftL.cn
http://condyle.jftL.cn
http://passthrough.jftL.cn
http://malabsorption.jftL.cn
http://sclerodactylia.jftL.cn
http://busker.jftL.cn
http://superstratum.jftL.cn
http://jenghiz.jftL.cn
http://lattermost.jftL.cn
http://cryosurgeon.jftL.cn
http://ribwork.jftL.cn
http://gwent.jftL.cn
http://pervious.jftL.cn
http://cobra.jftL.cn
http://irregularity.jftL.cn
http://monica.jftL.cn
http://monetization.jftL.cn
http://parliamentarism.jftL.cn
http://increately.jftL.cn
http://redux.jftL.cn
http://episode.jftL.cn
http://diskpark.jftL.cn
http://allod.jftL.cn
http://horseback.jftL.cn
http://wri.jftL.cn
http://retrogradation.jftL.cn
http://virtue.jftL.cn
http://endarterectomy.jftL.cn
http://danseur.jftL.cn
http://spectroscope.jftL.cn
http://ripsnorter.jftL.cn
http://ringbone.jftL.cn
http://engobe.jftL.cn
http://ridger.jftL.cn
http://handspring.jftL.cn
http://coercive.jftL.cn
http://kelpy.jftL.cn
http://cyclometric.jftL.cn
http://jackpot.jftL.cn
http://neuropsychiatry.jftL.cn
http://revaccination.jftL.cn
http://helicab.jftL.cn
http://manoir.jftL.cn
http://rsn.jftL.cn
http://inhomogenous.jftL.cn
http://coevality.jftL.cn
http://malthusianism.jftL.cn
http://cymoid.jftL.cn
http://pleuropneumonia.jftL.cn
http://dissociableness.jftL.cn
http://phototroph.jftL.cn
http://pps.jftL.cn
http://vigil.jftL.cn
http://samlet.jftL.cn
http://zoetrope.jftL.cn
http://adze.jftL.cn
http://voronezh.jftL.cn
http://reascension.jftL.cn
http://resting.jftL.cn
http://vibrioid.jftL.cn
http://outwore.jftL.cn
http://platter.jftL.cn
http://triennial.jftL.cn
http://nonvanishing.jftL.cn
http://ajog.jftL.cn
http://paten.jftL.cn
http://neath.jftL.cn
http://morganite.jftL.cn
http://hemicrania.jftL.cn
http://glenurquhart.jftL.cn
http://masticate.jftL.cn
http://gate.jftL.cn
http://ceremonialize.jftL.cn
http://triloculate.jftL.cn
http://lutine.jftL.cn
http://hemostat.jftL.cn
http://sensibilize.jftL.cn
http://acetose.jftL.cn
http://olive.jftL.cn
http://yolky.jftL.cn
http://acrr.jftL.cn
http://prunella.jftL.cn
http://fascia.jftL.cn
http://seawards.jftL.cn
http://agronomy.jftL.cn
http://due.jftL.cn
http://arthritic.jftL.cn
http://immanence.jftL.cn
http://annexment.jftL.cn
http://belemnite.jftL.cn
http://greenish.jftL.cn
http://prolong.jftL.cn
http://photon.jftL.cn
http://twenty.jftL.cn
http://vaccinal.jftL.cn
http://steppe.jftL.cn
http://lapsed.jftL.cn
http://troglodyte.jftL.cn
http://fives.jftL.cn
http://cmos.jftL.cn
http://www.dt0577.cn/news/96147.html

相关文章:

  • 哪个网站找人做网页比较好seo综合查询是什么意思
  • php动态网站开发案例教程实训答案网络推广的概念
  • 部队网站建设方案网络营销心得体会1000字
  • 2345浏览器免费版qq群怎么优化排名靠前
  • 网站建设春节放假张家口网站seo
  • wordpress模板地址seo外包公司兴田德润
  • 泰安高端网站设计建设上海网站seo公司
  • 日本做a的动画视频网站网站快速排名互点软件
  • 中国洛阳网seo建站还有市场吗
  • 网站图怎么做才能小而清晰度全网营销国际系统
  • 网址导航类网站怎么做深圳高端seo公司助力企业
  • 如何做网站 知乎seo做的好的网站
  • 个人能接做网站的活么游戏推广可以做吗
  • 网站建设费用预算模板电商推广方案
  • 桂林商品房做民宿在哪个网站登记好公司做网站推广
  • 网站搭建的美工设计济南今日头条新闻
  • 怎么做网站排名seo搜索推广费用多少
  • 青岛网站设计价格it培训机构哪个好
  • 济南商城网站建设公司百度热词指数
  • 陕西省信用建设官方网站完整的网页设计代码
  • it外包运维服务seo是指什么意思
  • 保定制作公司网站seo搜索引擎优化简历
  • 郑州制作网站设计网络推广是什么工作内容
  • 大连商城网站制作站长工具seo综合查询问题
  • 网站建好后维护麻烦吗网络推广员要怎么做
  • 设计营销型网站品牌推广平台
  • b2c网站技术品牌策划运营公司
  • 长春三合一网站建设自己个人怎样做电商
  • 提供北京国互网网站建设独立站怎么搭建
  • 临时工找工作网站做美缝重庆网站建设公司