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


结尾

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

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

相关推荐
qq_284274056 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
全栈练习生6 小时前
AI Agent 沙箱
python·ai
hz567896 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
优橙教育7 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
qq_284274057 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
AIgorithmGEEK7 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
SEO_juper7 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
Titan20248 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
用户8356290780518 小时前
使用 Python 对 Excel 工作表进行排序
后端·python