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


结尾

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

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

相关推荐
ClinicTech13 分钟前
实验室洗瓶机的清洗系统架构与自动化控制解析
java·python
洋洋不叫杨杨19 分钟前
Codex 实战:用 AI 写运维脚本
大数据·python
高级程序源28 分钟前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计
2601_9499506337 分钟前
练题簿在线练题全流程:从资料导入到模拟考试与错题复盘
学习·考研·小程序·刷题·小程序推荐
boxiansheng1631 小时前
408计算机网络
网络·计算机网络·智能路由器
wno7041 小时前
Spring Security短信验证码登录
java·python·spring
泡泡鱼(敲代码中)1 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
别动我齐刘海1 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
闲云野鹤在人间1 小时前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php
AR-26710-1 小时前
Linux Day7——建组/用户、umask、Python脚本
linux·python