【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 …...
PyTorch数据集加载进阶:除了CIFAR10,你的自定义数据该怎么准备?
PyTorch数据集加载进阶:从CIFAR10到自定义数据的深度实践 在深度学习项目中,数据准备往往比模型构建更耗时。许多开发者能熟练使用torchvision.datasets加载标准数据集,却对自定义数据束手无策。本文将带你深入PyTorch数据加载机制ÿ…...
Betaflight飞控固件:2025年如何让你的穿越机飞行更稳定更智能?
Betaflight飞控固件:2025年如何让你的穿越机飞行更稳定更智能? 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight 还在为穿越机飞行抖动、信号不稳定而苦恼吗&#x…...
保姆级教程:在Ubuntu 20.04上用PyTorch 1.12和YOLOv5s完整训练COCO数据集(附时间预估与常见坑点)
从零开始:Ubuntu 20.04下YOLOv5s训练COCO数据集的实战指南 引言 在计算机视觉领域,目标检测一直是核心研究方向之一。YOLO(You Only Look Once)系列算法因其出色的实时性和准确性,成为工业界和学术界的宠儿。本文将带你从零开始,在…...
Moveit2 automaticaddison mycobot_ros2 代码讲解
github地址 https://github.com/automaticaddison/mycobot_ros2/tree/jazzy 一.mycobot_moveit_config 1.moveit2基本控制 在mycobot_moveit_config下面创建config/mycobot_280 initial_positions.yaml 定义了机械臂所有关节的初始位置 joint_limits.yaml 定义每个关节的…...
Unitree GO2 ROS2 SDK完整指南:5步实现四足机器人智能控制与自主导航
Unitree GO2 ROS2 SDK完整指南:5步实现四足机器人智能控制与自主导航 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree GO2 ROS2 SDK为四足机器人…...
自建AI编程助手服务:Recodex部署与Codex API代理实战
1. 项目概述与核心价值最近在折腾AI编程助手,发现OpenAI的Codex模型确实好用,但直接访问官方服务总是不太稳定,速度也时快时慢,对于需要深度集成的开发工作来说,体验不够丝滑。于是,我花了不少时间研究自建…...
联想刃7000k BIOS隐藏选项完全解锁指南:一键释放硬件隐藏性能
联想刃7000k BIOS隐藏选项完全解锁指南:一键释放硬件隐藏性能 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃70…...
别埋头苦选了!用对方法,俄罗斯的爆款就是你的货源!
标题建议(任选其一):🔥 扒光了同行底裤:跨境电商“无货源拿货”的顶级神操作,原来他们都在这么干!别再傻乎乎囤货了!一张图看懂“Ozon爆品 ➡️ 1688源头”的极速变现闭环。跨境圈不…...
BepInEx IL2CPP启动失败终极解决指南:从异常诊断到游戏正常运行
BepInEx IL2CPP启动失败终极解决指南:从异常诊断到游戏正常运行 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity游戏插件框架,为玩家和开发…...
开源代理解决 DeepSeek V4 与 Claude Code 的三个兼容性陷阱解决方案
在使用 Claude Code 的过程中,Anthropic 官方 API 的调用成本和网络问题一直是个痛点。DeepSeek V4 提供了兼容 Anthropic 格式的 API,价格优势明显,但实际对接时存在若干协议层面的差异,直接使用的话在进行 Agent spawn 工具调用…...
