news 2025/12/23 15:39:08

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()

四、结语

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/19 21:27:28

某安全so库深度解析

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

作者头像 李华
网站建设 2025/12/22 20:42:54

vue基于Spring Boot框架的在线电影票购买系统的设计与实现_8xxt52nn

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

作者头像 李华
网站建设 2025/12/23 2:27:16

在服务器上安装 aaPanel

aaPanel 官方文档: https://www.aapanel.com/docs/guide/quickstart.html 下载与安装脚本页: https://www.aapanel.com/new/download.html ¥7 1H1G服务器购买:https://hostvds.com/?affiliate_uuidfbff2c4f-05e9-42e0-9e16-c07…

作者头像 李华
网站建设 2025/12/23 8:41:24

Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现

文章目录Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现摘要Abstract1. Noisy Top-K Router1.1 理论背景1.2 代码实现2. Token 级与 Pooling 级路由2.1 理论背景2.2 代码实现3. Auxiliary Loss3.1 理论背景3.2 代码实现总结Week 29: 深度学习补遗&#xff1a…

作者头像 李华
网站建设 2025/12/22 2:37:49

25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货

25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货大盘指数经过近一个季度回调半指的风险得到了极大的释放,指数走出了三段4的调整,那在这个位置我们就不应该再看风险,三段4的调整已经…

作者头像 李华
网站建设 2025/12/21 16:52:34

what?动态规划?

动态规划入门:从原理到实战,吃透基础算法动态规划(Dynamic Programming,简称 DP)是算法领域的核心思想之一,也是面试、竞赛中的高频考点。它并非单一算法,而是一种 “化繁为简” 的解题思路 ——…

作者头像 李华