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 等 ------应用层协议,简单、高效,用现成轮子,快速实现功能


结尾

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

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

相关推荐
贞明电子7 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
代码山河8 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行8 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
HideF8 小时前
Linux
linux·服务器·网络
万联WANFLOW8 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
sbjdhjd8 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
释厄6238 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
梯度下降者8 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”10 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
taktok_ai10 小时前
用 cc-switch 连接 Taktok
网络