Python学习超简单第八弹:网络编程

Python快乐学习、快乐成长

1、网络编程

Python 网络编程官方标准里,两个级别访问的网络服务指的是:

  1. 低级别的:Socket 编程(套接字)
  2. 高级别的:应用层协议模块(HTTP/FTP/SMTP 等封装好的库)

2、Socket 编程

Socket(套接字)是操作系统提供的网络通信接口,是所有网络应用的底层基础。Python 的 socket 库直接对这个接口进行封装,属于最底层、最通用的网络编程方式。

  • 实现任意协议、任意格式的网络通信
  • 可以自己定义通信规则(TCP/UDP)
  • 是所有高级网络库的底层依赖

Python 中,我们用 socket()函数来创建套接字,语法格式如下:

socket.socket(family\[, type\[, proto]])

参数介绍:

family: 套接字家族可以使 AF_UNIX 或者 AF_INET

type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM

protocol: 一般不填默认为0.

2.1 服务端实例

新建server.py

python 复制代码
#!/usr/bin/python3
import socket
import sys

# 创建 socket 对象
serverObject=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#获取本地主机名
host=socket.gethostname()

port=8080

#绑定端口
serverObject.bind((host, port))

#设置最大连接数
serverObject.listen(5)

while True:
	 # 建立客户端连接
   clientsocket, addr = serverObject.accept()

   print('Connected by', addr)
   message ="Hello World"
   clientsocket.send(message.encode())
   clientsocket.close()

2.2 客户端实例

新建client.py

python 复制代码
#!/usr/bin/python3
# 文件名:client.py

# 导入 socket、sys 模块
import socket
import sys

# 创建 socket 对象
clientObject=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#获取本地主机名
host=socket.gethostname()

port=8080

#连接服务
clientObject.connect((host, port))

#接收数据
message=clientObject.recv(1024)
clientObject.close()

print(message)

2.3 打开两个终端

第一个终端执行 server.py 文件:

python3 server.py #启动服务端 不打印任何内容 等待客户端连接

第一个终端执行 client.py 文件:

python3 client.py #终端打印 【 b'Hello World'】

此时,第一个终端打印客户端的IP地址:

Connected by ('192.255.1.101', 50330)

3、应用层协议模块(高层、封装好)

应用层协议是基于 Socket 封装好的高级网络库,直接提供现成的应用层协议,不用关心底层连接细节。Python 自带的高层网络库:

urllib / requests:HTTP/HTTPS(网页、接口)

ftplib:FTP 文件传输

smtplib / poplib:邮件收发

xmlrpc:远程调用

作用:

快速开发网络应用

不用手动处理 TCP/UDP

直接使用成熟协议(HTTP、FTP、Email 等)

python 复制代码
import urllib.request

# 一行代码获取网页
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read().decode('utf-8')
print(html)

4、两者区别

第一级别:socket ------ 底层网络通信,通用、灵活 ,自己造轮子,控制所有细节

第二级别:urllib/ftplib/smtplib 等 ------应用层协议,简单、高效,用现成轮子,快速实现功能


结尾

记录自己的快乐学习日志,也祝贺观看到这的小伙伴早日学有所成,财富自由💰💰。

记得点赞👍、收藏👋呀!!!

相关推荐
小小测试开发2 小时前
安装 Python 3.10+
开发语言·人工智能·python
梦想不只是梦与想2 小时前
Python 中的装饰器
python·装饰器
我叫唧唧波3 小时前
Python+AI 全栈学习笔记
人工智能·python·学习
洛水水3 小时前
图床项目实现:Muduo 网络框架学习以及登录注册功能实现
网络·图床·muduo
copyer_xyf3 小时前
Python 异常处理
前端·后端·python
城北徐宫3 小时前
Linux信号深度解剖:5种产生、3张表、4次切换
linux·c++·学习
liulilittle4 小时前
论 Linux 内核态全局稳态带宽的卡尔曼估计与工程实现
linux·服务器·网络·c++·计算机网络·tcp·通信
pusheng20254 小时前
IFSJ全英文专访:中国创新力量重塑先进气体感知技术,赋能全球关键基础设施安全
前端·网络·人工智能·物联网·安全
麻雀飞吧4 小时前
期货多合约策略目标持仓怎么更新才不乱
python·区块链
Cthy_hy4 小时前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法