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

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据同步 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()

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
118 55
|
1月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
1月前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
75 2
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
106 6
|
17天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
99 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
17天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
43 3
|
22天前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
36 6
|
26天前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
48 8
|
25天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
79 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络