Python网络编程入门
一.Socket
简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~

2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端。
- 服务端:等待其他进程的连接,可接受发来的消息、可以回复消息~
- 客户端: 主动连接服务端,可以发送消息,可以接受回复~
一个服务端可以接受多个客户端发来的消息,如下图:
二.服务端开发
1.导入socket包

2.创建一个Socket对象
socket_server = socket.socket()
3.绑定IP地址和端口
socket_server.bind(('localhost', 1319))
端口号自定义,但别和nodejs、Jupyter、MySQL或者Tomcat这些重合了就行~
4.监听端口
socket_server.listen(1)
函数内参数设置为1,表示同时最多接受1个客户端的连接。
5.等待客户端连接
这里使用accept方法,这是一个阻塞方法:如果没有连接,则后续的代码皆不执行~
conn, addr = socket_server.accept()
accept返回的是一个二元元组:
- conn:客户端和服务端的连接对象
- address:客户端的地址信息
测试连接情况:
print(f"Connected by: {addr}")
6.接受客户端信息
data:str = conn.recv(1024).decode('utf-8')
#类型注释,字符串型
recv接受的参数是缓冲区大小,这里一般给1024即可。此外其返回值为一个字节数组也即bytes对象,需要decode方法通过UTF-8编码,将字节数组转换为字符串对象~
print(f"message:{data}")
7.回复消息
msg=input("回复消息:").encode('utf-8')
conn.send(msg)
input键入的是字符串对象,因此需要先编码为字节数组~
8.关闭链接
conn.close()
socket_server.close()
三.客户端开发
总的来说异曲同工,甚至更为简易:
import socket
socket_client= socket.socket()
socket_client.connect(('127.0.0.1', 1325)) #就是localhost,别犹豫
socket_client.send(bytes('Hello, client!', 'utf-8'))
recv_data=socket_client.recv(1024)
print(f"回复的消息是:{recv_data.decode('utf-8')}")
socket_client.close()
四.测试
将两个py文件都运行起来:

服务端已经收到了客户端发来的消息了,这时我们回复以后,客户端亦可正常收到~
相关文章:
Python网络编程入门
一.Socket 简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...
arm linux下的读写信号量rw_semphore的实现
本文基于arm linux 5.10来介绍内核中使用的读写信号量rw remphore的实现代码。 内核中信号量结构体struct rw_semaphore的定义在include/linux/rwsem.h 32位architectures下,结构体struct rw_semaphore中的count的使用如下: 先来看信号量的定义和初始化…...
完整的类在JVM中的生命周期详解
首先给出一个示例代码: 示例的目标是展示一个多功能的类结构,包含继承、接口实现、静态成员、本地方法、线程安全等特性,同时模拟一个简单的“计算器”场景,计算并管理数字。(尽量将所有的 Java 组件和关键字都给出&am…...
Flutter中常用命令
1.检测flutter运行环境 flutter doctor 2.升级flutter flutter upgrade 3.查看flutter 版本 flutter --version 4.查看连接的设备 flutter devices 5.运行flutter项目 flutter run 或者在vscode中按FnF5 6.打包 flutter build apk //默认打release包 7.开…...
C#里使用libxl的数字格式
由于EXCEL里可以表示不同的数字格式, 比如表示货币数字时,与表示普通序号的数字就不一样。 还有科学计算表示的数字使用小数点位数与普通货币也不一样。 如下所示: 要使用这些格式, 下面创建一个例子来演示保存这些数字格式: private void button11_Click(object send…...
c#难点整理2
1.对象池的使用 就是先定义一系列的对象,用一个,调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…...
android adjust 卸载与重装监测
想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…...
自然语言处理(5)—— 中文分词
中文分词的基本原理及实现 1. 什么是词2. 基本原理3. 发展趋势:多数场景无需显式分词 信息处理的目标是使用计算机能够理解和产生自然语言。而自然语言理解和产生的前提是对语言能够做出全面的解析。 汉语词汇是语言中能够独立运用的最小的语言单位,是语…...
解锁物联网高效开发,Synaptics SYN43756E Wi-Fi 6E 芯片登场
Synaptics 的 SYN43756E 芯片是一款高性能的 Wi-Fi 6E 支持 11a/b/g/n/ac/ax 的物联网(IoT)SoC,具备多项先进特性,适用于多种应用场景,以下是其主要优势: 1. 广泛的应用场景 智慧家庭:支持多种…...
C++和标准库速成(十二)——练习
目录 练习1.1题目答案 练习1.2题目答案 练习1.3题目答案 练习1.4题目答案 练习1.5题目答案 练习1.6题目答案 参考 练习1.1 题目 修改下面的Employee结构体,将其放在一个名为HR的名称空间中。你必须对main()中的代码进行那些修改才能使用此新实现?此外&a…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…...
5、linux c 线程 - 上
【四】线程 1. 线程的创建 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*routine)(void *), void *arg); pthread_t *thread:指向线程标识符的指针,用于存储新创建线程的 ID。 const p…...
2024年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)
2024 年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)) 背景描述:任务一:Hadoop 完全分布式安装配置(25 分)任务二:离线数据处理(25 分࿰…...
Model Context Protocol - Prompts
1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式,使服务器能够向客户端暴露提示模板(prompts)。Prompts 是服务器提供的结构化消息和指令,用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容ÿ…...
dify创建第一个Agent
1、首先LLM模型必须支持 Function Calling 由于deepseek-R1本地化部署时还不支持,所以使用 qwq模型。 2、创建空白 Agent 3、为Agent添加工具 4、测试 当未添加时间工具时 询问 时间 如下 5、开启时间工具 询问如下...
⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree
图论入门【数据结构基础】:什么是树?如何表示树? 之前我们有分别讲解二叉树的三种遍历的相关代码实现: ⭐算法OJ⭐二叉树的前序遍历【树的遍历】(C实现)Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…...
深度解析 | Android 13 Launcher3分页指示器改造:横线变圆点实战指南
一、需求背景与技术挑战 在Android 13系统定制开发中,我们面临将Launcher3桌面从传统双层架构优化为现代单层布局的挑战。原生系统采用的分页横线指示器在视觉呈现上存在两点不足: 风格陈旧不符合Material You设计规范 空间占用较大影响屏幕利用率 通…...
2. 商城前端部署
商城客户端前端部署 https://gitee.com/newbee-ltd/newbee-mall-api-go 使用开源新蜂商城的前端,git clone到本地 然后在vscode终端依次输入下列指令(配置好vue3相关环境的前提下): npm install npm i --legacy-peer-deps npm …...
鸿蒙生态开发
鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙(OpenHarmony)构建的分布式操作系统生态,旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务,覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…...
基于STM32进行FFT滤波并计算插值DA输出
文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话五、项目联想与扩展1. 倍频2. 降频3. 插值3.1 线性插值3.2 样条插值 一、前言背景 STM32 对 AD 采样信号进行快…...
【Oracle资源损坏类故障】:详细了解坏块
目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…...
996引擎-接口测试:背包
996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");...
第三十一篇 数据仓库(DW)与商业智能(BI)架构设计与实践指南
目录 一、DW/BI架构核心理论与选型策略1.1 主流架构模式对比(1)Kimball维度建模架构(2)Inmon企业工厂架构(3)混合架构 二、架构设计方法论与实施步骤2.1 维度建模实战指南(1)模型选择…...
智能追踪台灯需求文档
一、项目背景 设计一款具备人体感知与动态追踪能力的智能台灯,实现以下核心目标: 自动开关:检测到人体活动时自动开启光源,无人时关闭以节省能耗。主动追踪:通过机械结构实时调整光照方向,确保用户始终处…...
给语言模型增加知识逻辑校验智能,识别网络信息增量的垃圾模式
给LLM增加逻辑校验模型,赋予其批判性智能。 网络系统上信息不断增长,相当部分是非纯粹的人类生成,而是由各种模型生成输出。模型持续从网络取得信息,生成信息输出到网络,AI生态系统与网络信息池之间陷入信息熵增循环。…...
Electron打包文件生成.exe文件打开即可使用
1 、Electron 打包,包括需要下载的内容和环境配置步骤 注意:Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架 首先需要电脑环境有Node.js 和 npm我之前的文章有关nvm下载node的说明也可以去官网下载 检查是否有node和npm环…...
单播、广播、组播和任播
文章目录 一、单播二、广播三、组播四、任播代码示例: 五、各种播的比较 一、单播 单播(Unicast)是一种网络通信方式,它指的是在网络中从一个源节点到一个单一目标节点对的传输模式。单播传输时,数据包从发送端直接发…...
AI生成移动端贪吃蛇游戏页面,手机浏览器打开即可玩
贪吃蛇游戏可计分,可穿墙,AI生成适配手机浏览器的游戏,代码如下: <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name"viewport" …...
Cursor+Claude-3.5生成Android app
一、Android Studio下载 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安装完成 二、新建工程 点击new project 选择Empty Activity 起一个工程名 当弹出这个框时 可以在settings里面选择No proxy 新建好后如下 点击右边模拟器,…...
NLP高频面试题(九)——大模型常见的几种解码方案
大模型常见的几种解码方案 在自然语言生成任务中,如何从模型生成的概率分布中选择合适的词汇,是影响文本质量的关键问题。常见的解码方法包括贪心搜索(Greedy Search)、束搜索(Beam Search)、随机采样&…...
