Python3网络编程——Socket原理简介

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,同步至SelectDB 1个月
数据传输服务 DTS,同步至 ClickHouse 1个月
简介:

一、Python网络编程——客户端/服务器架构

1、服务器:服务器就是一系列硬件和软件,为一个或多个客户端提供所需要的服务。存在的目的就是等待客户端的请求,并响应他它们,然后等待更多请求。

2、客户端:客户端因特定的请求联系服务器,并发送必要的数据,然后等待服务器的回应,即最后完成请求或给出故障的原因。

3、工作过程图示:    

     

4、数据传输模式

     网络编程一般有两种数据传输模式:即两种协议  TCP  和  UDP  

     4.1、TCP方式的特点:

            (1)校验码(2)接收方反馈(3)信息包附带序号

     4.2、UDP方式的特点:

             (1)不建立连接:不需要花费时间建立连接和关闭连接

             (2)数据传输快:偶尔会丢失一两个消息

             (3)限制一个消息包不超过 64KB 的数据

     两种协议的对比:UDP 不建立连接,只保证数据的完整性,数据传输快,但是不保证数据真的被接收到,也不保证数据仅接收一次,同时也不保证数据的顺序。

 

二、Python网络编程模块——套接字 Socket 模块

1、创建套接字     

     语法格式为     sock = socket.socket(socket_family,socket_type,property=0)

     其中    socket_family 指定是 socket.AF_INET     地址类型IPV4或IPV6     默认为 IPV4  

               socket_type 指的是 socket.SOCK_STREAM 或 socket.SOCK_DGRAM   仅可用于Unix系统通信

               property=0 该参数默认为0,通常省略不写

2、创建 TCP 套接字

     t = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

3、创建 UDP 套接字

     u = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

 

三、TCP模式——服务器 server——套接字对象的方法

1、s.bind(address):将地址(服务端IP地址、端口)绑定到套接字上

     如果IP地址为 0.0.0.0 代表本机的任意一个IP           端口  0--1024 为系统保留

    address 必须是元组    即address = ('192.168.1.188',888)

    1.1、绑定的两种写法

           ① s.bind(('192.168.1.188',888))

           ② address = ('192.168.1.188',888)

               s.bind(address)

2、s.listen(backlog)       设置并启动TCP监听,其中 backlog 代表可以同时接受多少个socket连接

3、s.accept()     被动接受TCP客户端连接,一直等待直到连接到达。

 

四、TCP模式——客户端 client——套接字对象的方法

1、主动发起TCP服务器连接    c.connect()

2、异常时,返回错误码     c.connect_ex()

 

五、TCP模式——通用(适用于:服务端/客户端)——套接字对象的方法

1、 发送数据

      发送TCP消息(可能未将指定内容全部发送过去)   s.send()

      发送完整的TCP消息(推荐使用)    s.sendall()

2、接收 TCP 数据  s.recv(bufsize)

     bufsize 指定最多接收的数据量,可以使用1024   2048等

     如果不知道接收的数据量有多少,一般通过循环实现。

3、关闭套接字     s.close()

4、当前套接字地址   s.getsocketname()

5、设置套接字的阻塞或者非阻塞模式      s.setblocking()

6、设置阻塞套接字操作的超时时间         s.settimeout(timeout)   timeout为float类型,单位为秒

7、获取阻塞套接字操作的超时时间         s.gettimeout(timeout)   timeout为float类型,单位为秒

    

六、UDP模式

1、创建 UDP 套接字

     u = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

2、接收 UDP 消息     s.recvfrom()

3、发送 UDP 消息     s.sendto()

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
1月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
340 0
|
1月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
192 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
1月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
2月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
373 11
|
2月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
623 0
|
2月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
360 0
机器学习/深度学习 算法 自动驾驶
459 0
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
437 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
154 0

推荐镜像

更多