当前位置: 首页 > news >正文

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

Python快乐学习、快乐成长

    • 1、网络编程
    • 2、Socket 编程
      • 2.1 服务端实例
      • 2.2 客户端实例
      • 2.3 打开两个终端
    • 3、应用层协议模块(高层、封装好)
    • 4、两者区别
  • 结尾

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:

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


结尾

记录自己的快乐学习日志,也祝贺观看到这的小伙伴早日学有所成,财富自由💰💰。
记得点赞👍、收藏👋呀!!!

http://www.jsqmd.com/news/689084/

相关文章:

  • 策略模式的思想的经典案例分析
  • 【AI智能体】Claude Code 集成Github CLI 实现高效项目协同使用详解
  • 谷歌神经机器翻译GNMT:从技术原理到行业变革
  • 一个异或的性质
  • FastAPI在MLOps中的安全认证实践与优化
  • 如何集成Hermes Agent/OpenClaw?2026年阿里云及Coding Plan配置保姆级攻略
  • 中医AI智能诊疗系统:7步免费部署仲景大语言模型的完整指南
  • 2026指纹浏览器与AI风控对抗技术实践:动态环境适配与行为模拟的完整方案
  • Windows系统优化新思路:告别手动调整,用WinUtil实现一键智能管理
  • 厦大847信号与系统状元447分上岸信院经验贴!
  • 2026年Hermes Agent/OpenClaw如何安装?阿里云及Coding Plan配置详细解读
  • ESP32通过WiFi+SBUS协议控制INAV飞控完整教程
  • 为什么越来越多女性创业者选择“玫瑰工程”?一个运营十五年的社区健康品牌深度解析 - GrowthUME
  • 华为MateBook 16重装Win10后,我这样配置开发环境(含软件清单与D盘路径规划)
  • 美的智能家电本地控制终极指南:告别云端依赖,享受稳定智能生活
  • 用InsightFace搞定人脸3D关键点检测:从68点到106点,再到姿态角Pitch/Yaw/Roll的实战解析
  • 浏览器指纹反检测技术深度解析——从内核层防护到行为拟真的全链路实现
  • 华北理工大学怎么样?从办学层次、学科特色、科研实力与升学优势详解
  • 2026年,邯郸性价比高的助贷公司哪家靠谱?一文为你揭晓答案! - GrowthUME
  • 避坑指南:RH850 RS-CANFD中断那些容易搞错的细节(附BusOff处理与FIFO配置)
  • Qt串口通信GUI卡顿?试试把QSerialPort丢到子线程里(附完整代码)
  • pheatmap进阶玩法:手把手教你用聚类结果反向导出排序后的数据表格
  • TensorRT-LLM中KV缓存优化技术解析与实践
  • 中国药科大学赵玉成、徐健/皖西学院韩邦兴ACS Catal|元胡中痕量高效镇痛活性成分左旋紫堇达明生物合成最后缺失步骤的解析(附招聘信息)
  • 关于 CSS 打印你应该知道的样式配置
  • 灰度发布在Agent迭代中的实践:流量分配、效果评估与快速回滚
  • 【JAVA网络面经】网络模型(OSI+TCP/IP)
  • 杂题选讲 2026.4.23 (5)
  • 终极小说下载器:200+网站一键保存,免费打造你的私人数字图书馆
  • 数学利器Maple 2025保姆级下载与安装流程详解