Python学习超简单第八弹:网络编程
Python快乐学习、快乐成长
- 1、网络编程
- 2、Socket 编程
- 2.1 服务端实例
- 2.2 客户端实例
- 2.3 打开两个终端
- 3、应用层协议模块(高层、封装好)
- 4、两者区别
- 结尾
1、网络编程
Python 网络编程官方标准里,两个级别访问的网络服务指的是:
- 低级别的:Socket 编程(套接字)
- 高级别的:应用层协议模块(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:
#!/usr/bin/python3importsocketimportsys# 创建 socket 对象serverObject=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#获取本地主机名host=socket.gethostname()port=8080#绑定端口serverObject.bind((host,port))#设置最大连接数serverObject.listen(5)whileTrue:# 建立客户端连接clientsocket,addr=serverObject.accept()print('Connected by',addr)message="Hello World"clientsocket.send(message.encode())clientsocket.close()2.2 客户端实例
新建client.py:
#!/usr/bin/python3# 文件名:client.py# 导入 socket、sys 模块importsocketimportsys# 创建 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 等)
importurllib.request# 一行代码获取网页response=urllib.request.urlopen('http://www.baidu.com')html=response.read().decode('utf-8')print(html)4、两者区别
第一级别:socket —— 底层网络通信,通用、灵活 ,自己造轮子,控制所有细节
第二级别:urllib/ftplib/smtplib 等 ——应用层协议,简单、高效,用现成轮子,快速实现功能
结尾
记录自己的快乐学习日志,也祝贺观看到这的小伙伴早日学有所成,财富自由💰💰。
记得点赞👍、收藏👋呀!!!
