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


结尾

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

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

相关推荐
手握风云-20 分钟前
一条消息的旅程:RabbitMQ 学习与实践(四)
学习
青 春 记 忆8 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO38 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
MC皮蛋侠客8 小时前
DNP3 系列(十二):测试与工具链——模拟器、Wireshark 与一致性测试
网络·wireshark·dnp3
观测云10 小时前
Fastjson 高危 RCE(CVE-2026-16723):如何用观测云快速发现并完成修复
网络·安全·可观测性·观测云
临沂GEO10 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白10 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
楷哥爱开发11 小时前
TikTok Shop新加坡本土店入驻:如何选择新加坡本土住宅IP?
网络·网络协议·tcp/ip
小弥儿12 小时前
GitHub今日热榜 | 2026-08-26:AI 大脑与知识管理扎堆
人工智能·学习·开源·github
荷蒲12 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习