【Python】网络编程
Socket
Socket (简称 套接字)是进程之间通信一个工具,进程之间想要进行网络通信需要socket。Socket负责进程之间的网络数据传输,好比数据的搬运工。

客户端和服务端
2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端
Socket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息
Socket客户端:主动连接服务端、可以发送消息、可以接收回复

Socket服务端编程
主要分为如下几个步骤:
1、创建socket对象
import socket
socket_server = socket.socket()
2、绑定socket_server到指定IP和地址
socket_server.bind((host, port))
3、服务端开始监听端口
socket_server.listen(backlog)
# backlog为int整数,表示允许的连接数量,超出的会等待,可以不填,不填会自动设置一个合理值
4、接收客户端连接,获得连接对象
conn, address = socket_server.accept()
print(f'接收到客户端连接,连接来自:{address}')
# accept()是阻塞方法,如果没有连接,会卡在当前这一行不向下执行代码
# accept()返回的是一个二元元组,可以使用上述形式,用两个变量接收二元元组的2个元素
5、客户端连接后,通过recv方法,接收客户端发送的消息
while True:data = conn.recv(1024).decode('UTF-8')# recv()的返回值是字节数组(Bytes),可以通过decode使用UTF-8解码为字符串# recv()的传参是buffsize(缓冲区大小),一般设置为1024即可print(f'接收到发送来的数据:{data}')# 6、通过conn(客户端当次连接对象),调用send()可以回复消息reply = input('输入要和客户端回复的消息:')if reply == 'exit':breakconn.send(reply.encode('UTF-8'))
# 可以通过while True无线循环来持续和客户端进行数据交互
# 可以通过判定客户端发来的特殊标记,如exit,来退出无线循环
7、conn(客户端当次连接对象)和socket_server对象调用close()关闭连接
示例:
# socket服务端开发
import socket# 1、创建socket对象
socket_server = socket.socket()# 2、绑定socket_server到指定IP和地址
socket_server.bind(('localhost', 8888))# 3、服务端开始监听端口
socket_server.listen(1)# 4、接收客户端连接,获得连接对象
conn, address = socket_server.accept()
print(f'接收到客户端连接,连接来自:{address}')# 5、客户端连接后,通过recv方法,接收客户端发送的消息
while True:data = conn.recv(1024).decode('UTF-8')# recv()的返回值是字节数组(Bytes),可以通过decode使用UTF-8解码为字符串# recv()的传参是buffsize(缓冲区大小),一般设置为1024即可print(f'接收到发送来的数据:{data}')# 6、通过conn(客户端当次连接对象),调用send()可以回复消息reply = input('输入要和客户端回复的消息:')if reply == 'exit':breakconn.send(reply.encode('UTF-8'))# 7、关闭连接
conn.close()
socket_server.close()
Socket客户端编程
主要分为如下几个步骤:
1、创建socket对象
import socket
socket_server = socket.socket()
2、连接到服务端
socket_client.connect((host, port))
3、发送消息
while True:send_msg = input('输入要发送的消息:')if send_msg == 'exit':# 通过特殊标记来确保可以退出无线循环breaksocket_client.send(send_msg.encode('UTF-8')) # 消息需要编码为字节数组(UTF-8编码)# 4、接收返回消息recv_data = socket_client.recv(1024).decode('UTF-8') # 接收到的消息需要通过UTF-8解码为字符串# 1024是缓冲区大小,一般1024即可# recv()是阻塞式的,即不接收到返回,就卡在这里等待print(f'服务端回复消息为:{recv_data}')
4、关闭连接
socket_client.close()
示例:
# socket客户端开发
import socket# 1、创建socket对象
socket_client = socket.socket()# 2、连接到服务端
socket_client.connect(('localhost', 8888))# 3、发送消息
while True:send_msg = input('输入要发送的消息:')if send_msg == 'exit':# 通过特殊标记来确保可以退出无线循环breaksocket_client.send(send_msg.encode('UTF-8')) # 消息需要编码为字节数组(UTF-8编码)# 4、接收返回消息recv_data = socket_client.recv(1024).decode('UTF-8') # 接收到的消息需要通过UTF-8解码为字符串# 1024是缓冲区大小,一般1024即可# recv()是阻塞式的,即不接收到返回,就卡在这里等待print(f'服务端回复消息为:{recv_data}')# 4、关闭连接
socket_client.close()
运行结果
先运行服务端,再运行客户端。此处启动两个cmd窗口进行演示。

相关文章:
【Python】网络编程
Socket Socket (简称 套接字)是进程之间通信一个工具,进程之间想要进行网络通信需要socket。Socket负责进程之间的网络数据传输,好比数据的搬运工。 客户端和服务端 2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端 Socket服务…...
客户端开发常用框架
在Unity游戏开发中,客户端常用的框架包括以下几种: 1.Unity的网络框架:Unity自带了网络框架,包括Unity Networking、Unity Matchmaker和Unity Remote等。这些框架可以帮助我们进行游戏的联机对战、排行榜、跨平台等功能的设计和实…...
数据分析综述
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
区块链技术与应用 - 学习笔记2【密码学基础】
大家好,我是比特桃。本系列笔记只专注于探讨研究区块链技术原理,不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划,在“加快数字发展 建设数字中国”篇章中,区块链被列为“十四五”七大数字经济重点产业之一&#…...
制作Linux发行版安装镜像:复刻centos镜像安装ISO
制作Linux发行版安装镜像:复刻centos镜像安装ISO 我们平时经常下载Linux各个发行版,下载ISO,安装使用。那么ISO到底是如何制作的?安装过程是什么原理? 近来打算讲镜像制作的过程、原理,通过一个专栏分享一…...
【复习socket】每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——29/70 第二十九天
专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔ 如果大家觉得有帮助的话,感谢大家帮忙 点…...
postgresql-常用数学函数
postgresql-常用数学函数 案例 案例 --求余 1 select 5%2 as t; --绝对值 17.4 select abs(-17.4) as t2; -- 大于等于最小整数 -42 select ceil(-42.8) as t3; -- 小于等于的最大整数 42 select floor(42.3) as t4; -- 四舍五入 44 select round(43.6) as t5; -- 向零取整 12…...
Docker实战技巧(一):常用命令与最佳实践
一、原理 1、Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,它能直接访问物理设备,会给每一台虚拟机分配内存、CPU、网络、磁盘等资源,也可以确保虚拟机对应的硬…...
使用CUDA计算GPU的理论显存带宽
文章目录 一、显存带宽和理论显存带宽1. 显存带宽2. 理论显存带宽1)计算公式2)举例 二、利用CUDA计算理论显存带宽 一、显存带宽和理论显存带宽 1. 显存带宽 显存带宽是指显存和GPU计算单元之间的数据传输速率。 显存带宽越大,意味着数据传…...
npm install依赖冲突解决办法
今天npm的时候发现报错,原来是依赖冲突了 npm后面加上这个指令就可以顺利的安装依赖了。问题主因就是不同开发用了不同版本node导致依赖版本不同,出现了成功冲突,这是段指令;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但…...
植物大战僵尸各种僵尸攻略
前言 此文章为“植物大战僵尸”专栏中的009刊(2023年9月第八刊),欢迎订阅。版权所有。 注意: 1.本博客适用于pvz无名版; 2.pvz指植物大战僵尸(Plants VS Zonbies); 3.本文以耗费低做标准&am…...
Scrum敏捷开发企业实战培训
课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程,面向研发管理者、项目经理、产品经理、研发团队等,旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…...
uniapp 下拉框数据回显的问题
问题 : 现在是下拉框数据回显不了, 绑定的v-model 原因 : uniui 下拉框数据绑定要是 value text 这种格式的 解决办法: 将获取到的后端数据 转换为 需要的格式 ,再进行绑定 下拉框的数据 遍历...
使用php 获取时间今天、明天、昨天时间戳的详解
使用php获取时间今、明天、昨天时间戳 <?php echo "今天:".date("Y-m-d").""; echo "昨天:".date("Y-m-d",strtotime("-1 day")), ""; echo "明天:".date("Y-m-d&qu…...
IIS解析漏洞复现
文章目录 漏洞复现总结 漏洞复现 打开虚拟机,在C:\inetpub\wwwroot\8000_test目录下放一个phpinfo.php文件: 在服务器管理器中打开IIS管理器,选择处理映射程序: 点击添加模块映射: 配置映射模板,php文件…...
生活随笔-吐槽篇
前言 😘个人主页:曲终酣兴晚^R的小书屋🥱 😕作者介绍:一个莽莽撞撞的🐻 💖专栏介绍:日常生活&往事回忆 😶🌫️每日金句:被人暖一下就高热&…...
vscode debug python launch.json添加args不起作用
问题 为了带入参数调试python 程序,按照网上搜到的教程配置了lauch.json文件,文件中添加了"args": [“model” “0” “path”] {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: h…...
信息化发展23
加密解密 1 、加密技术包括两个元素: 算法和密钥。 2 、发信者将明文数据加密成密文, 然后将密文数据送入网络传输或存入计算机文件, 而且只给合法收信者分配密钥。合法收信者接收到密文后, 实行与加密变换相逆的变换,…...
FlinkCDC 菜鸟教程-文章目录
系列文章目录 背景篇 环境篇 准备一台已经安装了 Docker 的 Linux 或者 MacOS 电脑。准备教程所需要的组件版本对应关系安装环境检查 工具篇 flinkkibana 概念篇 Docker 介 绍Docker Compose 介 绍Kibana介 绍 实践篇 演示: Mysql CDC 导入 Elasticsearch 启动服务准备…...
从零开始-与大语言模型对话学技术-gradio篇(4)
前言 本文介绍「星火杯」认知大模型场景创新赛中的落选项目- AI命理分析系统,属于个人娱乐练手。总结提炼了往期文章精华并发掘出新的知识。 包括本地部署版本和Web在线版本,两种打包方式基于 半自动化使用.bat手动打包迁移python项目 如何把 Gradio …...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
