Socket编程与编码转换实战指南

一、引言

昨天讲了网络编程里it和tcp的一些相关概念,今天讲一下编码转换和socket网络编程

二、编码转换

1.为什么要学习编码转换

在计算机网络中,数据都是以二进制的形式进行传输的。所以在网络传输数据的时候,数据需要先编码转化为二进制(bytes)数据类型

I Love Python => 字符串 => 转换为二进制数据 => 网络中传输

2.数据的编码转换

数据转换方法说明:

encode

编码 将字符串转化为字节码

decode解码 将字节码转化为字符串

提示:encoed()和decode()函数可以接受参数,encoding是指在编解码过程中使用的编码方案。

字符串编码

str.encode(encoding=”utf-8”)

二进制解码

bytes.decode(encoding=“utf-8”)

三、socket网络编程

1.socket套接字

1.1目前存在的问题

到目前为止我们学习了IP地址和端口号,使用这些我们就可以在茫茫的网络海洋中进行畅游了么?

答案是否定的!只知道IP地址和端口号,没有工具的辅助是无法抵达'诗和远方的'

1.2socket套接字

那我们需要什么工具呢?

socket套接字工具,它是计算机之间进行通信一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

这就好比现实中的电话,当知道了对方的电话号码后需要使用电话才能进行通讯,程序之间想要进行网络通信需要基于这个socket套接字,socket套接字就是程序间进行网络通讯的工具。

1.3socket使用场景

不夸张地说,只要跟网络相关的应用和程序基本都使用了socket

2.TCP客户端及服务器端开发实践

2.1TCP网络应用程序开发分类

TCP网络应用程序开发分为客户端开发和服务器端开发,客户端程序是指运行在用户设备上的程序,服务端程序是指运行在服务器设备上的程序,专门为客户端提供数据服务。

2.2 TCP客户端程序开发流程及应用实践(五步走)

拿打电话来举例的话就是:

1.创建客户端套接字对象(买手机)

2.和服务端套接字建立联系(打电话)

3.发送数据(说话)

4.接收数据(接电话)

5.关闭客户端和服务端(挂电话

socket类的参数和方法说明:

AddressFamilyIP地址类型, 分为IPv4和IPv6
Type传输协议类型

开发客户端需要使用的函数:

connect:和服务端套接字建立联系

send:发送数据

recv:接收数据

close:关闭连接

TCP客户端程序开发实践:

import socket if __name__ == '__main__': #加一层保护 # 1、创建客户端套接字对象 tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2、和服务器端套接字建立连接(参数必须是一个元祖) tcp_client_socket.connect(("192.168.31.181", 8080)) # 3、发送数据 tcp_client_socket.send('hell, itheima'.encode(encoding='utf-8')) # 4、接收数据 recv_data = tcp_client_socket.recv(1024).decode('utf-8') print(recv_data) # 5、关闭客户端套接字 tcp_client_socket.close()

3.TCP服务器端开发流程及应用实践(七步走)

1.创建服务端套接字对象

2.绑定ip地址和端口号

3.设置监听

4.等待接收客户端的连接请求

5.接收数据

6.发送数据

7.关闭套接字

客户端socket类的参数和方法说明:

AddressFamilyIP地址类型, 分为TPv4和IPv6
Type传输协议类型

开发服务器端需要使用的函数:

bind绑定IP地址和端口号
listen设置监听
accept等待接受客户端的连接请求
send发送数据
recv接收数据

TCP服务器端程序开发实践

import socket if __name__ == '__main__': # 1、创建服务器端套接字对象 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2、绑定IP地址与端口号 tcp_server_socket.bind(("", 8888)) # 3、开启监听 tcp_server_socket.listen(128) # 4、等待接收客户端连接请求 conn_socket, ip_port = tcp_server_socket.accept() print('客户端IP+端口:', ip_port) # 5、接收数据 recv_data = conn_socket.recv(1024) print('接收到的数据:', recv_data.decode()) # 6、发送数据 conn_socket.send("客户端的数据已经收到了".encode()) # 7、关闭套接字 conn_socket.close() tcp_server_socket.close()

四、结语

明天接着给大家讲多任务编程.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1014734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博士生必看】博士论文被退稿?可能是AI惹的祸!Paperzz智能降重+降AIGC,守护你的学术尊严!

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/weighthttps://www.paperzz.cc/weight 副标题: 博士论文查重率5%≠安全!AIGC检测才是学位“终极审判”!Paperzz三步操作,10分钟将AI痕…

粒子群算法在风光储微电网优化调度中的应用:经济目标下的电源侧与负荷侧运行策略优化

基于粒子群算法的考虑需求侧响应的风光储微电网优化调度 考虑电源侧与负荷侧运行成本,以经济运行为目标函数,风电、光伏、储能出力、上级电网购电记忆可削减负荷为优化变量,并采用粒子群算法进行求解。1. 系统概述 本项目实现了一个基于多目标…

PRML为何是机器学习的经典书籍中的经典?

PRML(Pattern Recognition and Machine Learning,中文名《模式识别与机器学习》)被誉为机器学习领域的“圣经”,其经典性体现在内容深度与广度、理论框架的统一性、数学严谨性、结构合理性、实践资源丰富性等多个方面,…

【paperzz免费文献】5分钟搞定百篇文献?Paperzz一键生成文献综述,导师都说“这孩子真会用工具”!

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/journalsReviewedhttps://www.paperzz.cc/journalsReviewed 副标题: 专科论文不用熬通宵!只需输入标题→粘贴文献→等5分钟,一份逻辑清晰、内容充…

晶体塑性有限元多晶Voronoi模型生成:Neper软件在Linux系统下的神奇之旅

晶体塑性有限元多晶voronoi模型生成,Linux系统下的Neper软件,无需复杂安装,下载即可使用! 在材料科学与工程领域,晶体塑性有限元多晶Voronoi模型的生成是一项关键任务,它对于理解材料在微观结构层面的力学行…

核技巧

好的,我们来深入解释核技巧(Kernel Trick)。这是机器学习和函数分析中一个极其优雅且强大的数学工具。 核技巧的核心思想 核技巧允许我们在不显式计算(甚至不知道)高维特征映射的情况下,直接计算高维特征空间中的…

Redis缓存三大问题详解:击穿、穿透与雪崩的解决方案

在使用 Redis 作为缓存层时,我们经常会遇到三个经典问题:缓存击穿、缓存穿透和缓存雪崩。这些问题可能导致系统性能下降甚至崩溃,本文将详细介绍这三个问题的原因和解决方案。一、🎯 缓存击穿问题描述:某个热点 key 在…

“蟒蛇书”作者力荐,全球热销的Python入门经典书第3版出版

全新第3版,基于Python 3.13,全球热销75万+,中文版累计销量35万,全书案例素材源代码。零门槛学Python,轻松摆平海量烦琐事务,百万级爆款“蟒蛇书”作者埃里克马瑟斯作序推荐的《Python编程快速上…

完整教程:打造可编程可集成的实时计算平台:阿里云实时计算 Flink被集成能力深度解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【开题答辩全过程】以 基于PHP的高校心理测评系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

在C# 中搭建基于VisionPro的多相机多线程采集与Socket通讯的视觉系统

c#visionpro视觉系统源代码 多相机多线程采集 Socket通讯在工业自动化和机器视觉领域,多相机多线程采集数据并通过Socket通讯进行数据传输是一项常见且重要的任务。借助C# 的强大功能以及VisionPro视觉系统,我们可以高效地实现这一过程。 多相机多线程采…

Docker 搭建Nexus3私服

一、Nexus 简介 Nexus Repository Manager 3(简称Nexus3)是Sonatype公司推出的一款仓库管理工具,主要用于存储、管理和分发: Maven(Java)依赖Docker 镜像npm(Node.js)包PyPI&#xf…

obsidian(md笔记管理)使用实践

省流版本:obsidian更加强调笔记管理,typora更加注意笔记编辑和查看体验。obsidian需要一番折腾typora开箱即好用,但最重要的还是你要开始写,那怕只写一个字,一段话。 ps.可能有人会说vscode也能编程和管理md,但是…

【开题答辩全过程】以 基于NodeJs的国学诗词网站设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

RFID资产管理:数据安全措施全解析,企业必看指南

在数字化资产管理进程中,RFID 技术凭借高效识别、批量采集的特性,成为企业提升资产管理效率的重要手段,而数据安全则是 RFID 资产管理体系落地的核心根基。首码资产管理系统依托 RFID 技术搭建全流程数据防护体系,从数据采集到存储…

PPO是属于什么类型的RL算法,on policy还是off policy

PPO是属于什么类型的RL算法,on policy还是off policyPPO(Proximal Policy Optimization)属于 on-policy 的强化学习算法。结论一句话👉 PPO 是 on-policy 的策略梯度(Policy Gradient)方法,而不…

【Python大数据项目推荐】Spark+Django共享单车数据分析可视化系统实现 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡如果你遇到具体的…

vue基于Spring Boot框架的在线投稿系统的设计与开发_fu09r447

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

某安全so库深度解析

分析对象: sub_1B924 及其完整调用链(so文件见附件) 分析目标: 还原代码逻辑、提取核心对抗算法、复现 Shellcode、制定防御策略 分析深度: 指令级/内核级 技术标签: Anti-Frida, Watchdog, Shellcode I…