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

简介:

一、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的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
9月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
317 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
11月前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
466 0
|
9月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
10月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
854 51
|
11月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
697 18
|
10月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
278 1
|
10月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
425 0

推荐镜像

更多