Python网络编程

文章目录

  • 一、例子展示
    • 1.1 端口号
  • 二、IO模型
    • 2.1 同步与异步
    • 2.2 阻塞非阻塞
    • 2.3 Web服务器IO模型
      • 2.3.1 Python Web
  • 三、CPU模型
    • 3.1 单核单进程
    • 3.2 多核多进程
    • 3.3 线程
    • 3.4 携程
  • 四、代码示例
  • 总结


一、例子展示

python自带一个web server服务器,控制台运行:

-m:运行的模块 http.sever:模块名 8888: 端口号 127.0.0.1:本机ip地址
python -m http.server 8888 --bind 127.0.0.1

在这里插入图片描述
127.0.0.1不走物理网卡,走的是操作系统虚拟出来的IP地址,wireshark软件无法抓包,因此,需要专用的软件抓取操作系统虚拟出来的IP地址
抓包工具之:Wireshark 和 RawCap

模块http.server位置如下:

Python网络编程_第1张图片
访问ip地址:
Python网络编程_第2张图片

python自带的服务器功能即将当前目录下的文件展示

显示当前目录C:\Users\lenovo\:
在这里插入图片描述
Python网络编程_第3张图片

启动RawCap.exe:
Python网络编程_第4张图片

1.1 端口号

TCP与UDP段结构中端口地址都是16比特,可以有在0—65535范围内的端口号。
网络常用端口号大全


二、IO模型

2.1 同步与异步

关注消息通信机制
Python网络编程_第5张图片

2.2 阻塞非阻塞

关注程序在等待调用结果(消息,返回值)时的状态
Python网络编程_第6张图片
同步往往伴随阻塞,异步往往伴随非阻塞

2.3 Web服务器IO模型

Python网络编程_第7张图片
Python网络编程_第8张图片

2.3.1 Python Web

在这里插入图片描述
Python网络编程_第9张图片
Python网络编程_第10张图片
Python网络编程_第11张图片
Python网络编程_第12张图片
Python网络编程_第13张图片


三、CPU模型

Python网络编程_第14张图片

3.1 单核单进程

Python网络编程_第15张图片
Python网络编程_第16张图片

3.2 多核多进程

Python网络编程_第17张图片

3.3 线程

Python网络编程_第18张图片

3.4 携程

Python网络编程_第19张图片


四、代码示例

代码示例:

import socket
# 简单的单进程的web server 处理
HOST,PORT = '127.0.0.1',8888 #本机ip 端口号
#初始化
#新建socket socket.SOCK_STREAM:TCP面向连接 AF_INET:IPV4
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#socket.SO_REUSEADDR:地址可复用 可以有多个请求连接这个地址
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
listen_socket.bind((HOST,PORT))#绑定
listen_socket.listen(1)#同时只能接受一个请求
print("Severing HTTP  on port %s ..." % PORT)
'''
下面的是典型的http服务请求过程
http的每一次请求过程: 接受数据 处理 数据返回 关闭
http是短链接		一次服务、一次请求建立一次连接、处理完再切断这次连接
'''
while True:
    client_connection , client_address = listen_socket.accept()#监听 接受请求
    request = client_connection.recv(1024)#读取请求数据
    print(request)
    # 返回字符串 b:字节型
    #协议 状态码 OK正常 返回内容:HELLO WORLD!
    #三个引号表示保持原始格式
    http_response = b"""
HTTP/1.1 200 OK

HELLO WORLD!
"""
    client_connection.sendall(http_response)
    client_connection.close()

结果展示:
在这里插入图片描述
Python网络编程_第20张图片
此时再看程序运行窗口:

Python网络编程_第21张图片

总结

Python网络编程_第22张图片

你可能感兴趣的:(Python基础及应用,python,网络,socket)