当前位置: 首页 > news >正文

Python实现TCP和UDP通信

目录

一:TCP

二:UDP


一:TCP

在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例,展示了如何使用Python的socket模块创建一个TCP客户端和服务器。

TCP服务器

import socket def start_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 12345)) # 绑定IP地址和端口号 server_socket.listen(1) # 开始监听,参数是队列大小 print("Server is listening...") while True: client_socket, addr = server_socket.accept() # 接受客户端连接请求 print(f"Connection from {addr} has been established!") # 在这里,你可以发送和接收数据 client_socket.send(b"Hello from server!") # 发送数据到客户端 data = client_socket.recv(1024) # 从客户端接收数据 print(f"Received data: {data.decode()}") client_socket.close() # 关闭连接 if __name__ == "__main__": start_server()

TCP客户端

import socket  

  

def start_client():  

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    client_socket.connect(('localhost', 12345)) # 连接到服务器  

  

    data = client_socket.recv(1024) # 从服务器接收数据  

    print(f"Received data: {data.decode()}")  

  

    client_socket.send(b"Hello from client!") # 发送数据到服务器  

    client_socket.close() # 关闭连接  

  

if __name__ == "__main__":  

    start_client()

在这个示例中,服务器首先创建一个socket,然后绑定到一个本地IP地址和一个端口号,并开始监听连接请求。当一个客户端尝试连接到服务器时,服务器接受连接请求,然后发送一条消息给客户端。客户端则连接到服务器,接收服务器的消息,然后发送一条消息回服务器。

二:UDP

UDP服务器

import socket  

  

def start_udp_server():  

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP socket对象  

    server_socket.bind(('localhost', 12345)) # 绑定IP地址和端口号  

  

    while True:  

        data, addr = server_socket.recvfrom(1024) # 接收客户端发送的数据,最大长度为1024字节  

        print(f"Received data from {addr}")  

        print(f"Data: {data.decode()}")  

  

if __name__ == "__main__":  

    start_udp_server()

UDP客户端

import socket  

  

def start_udp_client():  

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP socket对象  

  

    client_socket.sendto(b"Hello from client!", ('localhost', 12345)) # 发送数据到服务器  

    data, addr = client_socket.recvfrom(1024) # 接收服务器返回的数据,最大长度为1024字节  

    print(f"Received data from {addr}")  

    print(f"Data: {data.decode()}")  

  

if __name__ == "__main__":  

    start_udp_client()

在这个示例中,服务器首先创建一个UDP socket对象,然后绑定到一个本地IP地址和一个端口号。当客户端尝试发送数据到服务器时,服务器通过recvfrom()方法接收数据,然后打印出来。客户端则通过sendto()方法发送数据到服务器,然后等待服务器的响应,通过recvfrom()方法接收服务器的响应数据,然后打印出来。

相关文章:

Python实现TCP和UDP通信

目录 一:TCP 二:UDP 一:TCP 在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例,展示了如何使用Python的socket模块创建一个TCP客户端和服务器。 TCP服务器 import socket def start_server(): s…...

用HTML5 + JavaScript实现下雪效果

用HTML5 JavaScript实现下雪效果 下面是用HTML5 JavaScript实现下雪效果示例&#xff0c;展示了如何使用 HTML5 的 <canvas> 元素以及 JavaScript 来创建下雪效果。效果如下&#xff1a; 源码如下&#xff1a; <!DOCTYPE html> <html lang"en">…...

PDF操作——批量删除末页

一、说明 由于PDF末页为空白页或者是免责声明需要删除&#xff0c;涉及的文件比较多&#xff0c;因此写了一小段代码进行处理。 二、完整架构流程 这个代码的整体架构流程可以分为以下几个步骤&#xff1a; 导入所需的库&#xff1a;首先&#xff0c;代码导入了PyPDF2和os两…...

Jasperreport 生成 PDF之省纸模式

省纸模式顾名思义就是节省纸张&#xff0c;使用 Jasper 去生成 PDF 的时候如果进行分组打印的时候&#xff0c;一页 A4 纸只会打印一组数据。这种情况下&#xff0c;如果每组数据特别少&#xff0c;只有几行&#xff0c;一页 A4 纸张根本用不了&#xff0c;就会另起一页继续打印…...

IDEA反编译Jar包

反编译步骤 使用IDEA安装decompiler插件 找到decompiler插件文件夹所在位置&#xff08;IDEA安装路径/plugins/java-decompiler/lib &#xff09;&#xff0c;将需要反编译的jar包放到decompiler插件文件夹下&#xff0c;并创建一个空的文件夹&#xff0c;用来存放反编译后的…...

MySQL 备份恢复

1.1 MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了。 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数…...

UbuntuServer22.04LTS在线安装MySQL8.x

UbuntuServer22.04LTS在线安装MySQL8.x 文章目录 UbuntuServer22.04LTS在线安装MySQL8.x1. 安装1. 官网2. 在线安装3. 修改密码及设置远程登录4. 其他配置参考 2. 启动和停止1. 查看运行状态2. 开机自启3. 查看默认服务器配置命令 3. 登录 1. 安装 1. 官网 官网安装文档&#…...

GmSSL - GmSSL的编译、安装和命令行基本指令

文章目录 Pre下载源代码(zip)编译与安装SM4加密解密SM3摘要SM2签名及验签SM2加密及解密生成SM2根证书rootcakey.pem及CA证书cakey.pem使用CA证书签发签名证书和加密证书将签名证书和ca证书合并为服务端证书certs.pem&#xff0c;并验证查看证书内容&#xff1a; Pre Java - 一…...

面试题:为什么MySQL不建议使用NULL作为列默认值?

文章目录 前言介绍总结 前言 今天来分享一道美团高频面试题&#xff0c;5 分钟搞懂“为什么 MySQL 不建议使用 NULL 作为列默认值&#xff1f;”。 对于这个问题&#xff0c;通常能听到的答案是 使用了 NULL 值的列将会使索引失效,但是如果实际测试过一下,你就知道IS NULL会使…...

ClickHouse基于数据分析常用函数

文章标题 一、WITH语法-定义变量1.1 定义变量1.2 调用函数1.3 子查询 二、GROUP BY子句&#xff08;结合WITH ROLLUP、CUBE、TOTALS&#xff09;三、FORM语法3.1表函数3.1.1 file3.1.2 numbers3.1.3 mysql3.1.4 hdfs 四、ARRAY JOIN语法&#xff08;区别于arrayJoin(arr)函数&a…...

c语言编译和链接

文章目录 翻译环境和运⾏环境编译预处理编译词法分析语法分析语义分析 汇编 链接地址和空间分配符号决议重定位 翻译环境和运⾏环境 在c语言标准&#xff08;ANSI C&#xff09;中的任何⼀种实现中&#xff0c;存在两个不同的环境。 翻译环境&#xff1a;在这个环境中将人写的…...

C++ printf解释

在C中&#xff0c;printf 是一个用于格式化输出的函数。它是C语言中标准库函数的一部分&#xff0c;被继承到了C中。 printf函数的基本语法如下&#xff1a; int printf(const char* format, ...); 其中&#xff0c;format 参数是一个格式化字符串&#xff0c;用于指定输出的…...

paddle环境安装

一、paddle环境安装 如pytorch环境安装一样&#xff0c;首先在base环境下创建一个新的环境来安装paddlepaddle框架。首先创建一个新的环境名叫paddle。执行如下命令。 conda create -n paddle python3.8创建好了名叫paddle这个环境以后&#xff0c;进入到这个环境中&#xff…...

kingbase配置SSL双向认证

SSL简介&#xff1a; SSL属于传输加密&#xff0c;在服务器端和客户端建立加密通信渠道来保证数据安全&#xff0c;防止数据在网络传输过程中被篡改和拦截。SSL加密可以使用第三方证书机构颁发的数字证书&#xff0c;也可以使用自签名证书。这里我们使用自签名证书。 背景&am…...

Android Studio 使用小记2 Flutter提交SVN时需要忽略哪些文件

今天上午发了一篇使用SVN的小记&#xff0c;在解决问题的过程中&#xff0c;发现不少同学在使用Android Studio进行Flutter应用开发时&#xff0c;对需要忽略哪些文件&#xff08;不提交到SVN协同&#xff09;不是很明确&#xff0c;对于这个问题&#xff0c;Flutter官方有明确…...

搜索引擎评价指标及指标间的关系

目录 二分类模型的评价指标准确率(Accuracy,ACC)精确率(Precision,P)——预测为正的样本召回率(Recall,R)——正样本注意事项 P和R的关系——成反比F值F1值F值和F1值的关系 ROC&#xff08;Receiver Operating Characteristic&#xff09;——衡量分类器性能的工具AUC&#xff…...

armbian修改docker目录到硬盘

玩客云自带内存8G&#xff0c;根目录很快就满了&#xff0c;这里调整docker的目录到硬盘上/sda1。 docker info|grep "Docker Root Dir:" Docker Root Dir:/var/lib/docker 查看docker 默认目录在哪里 Docker 版本 > v17.05.0 docker -v Docker version 25.0.…...

cip、ethernet/ip开源协议栈:开发源代码

EtherNet/IP是一个工业以太网协议&#xff0c;它结合标准协议TCP和UDP&#xff0c;在以太网上基础上的通用工业协议&#xff08;CIP&#xff09;。 该协议由ODVA维护。ODVA还管理其他CIP实现&#xff0c;如DeviceNet。 协议栈和源代码下载 www.jngbus.com 在开发Ethernet/Ip…...

网络原理TCP/IP(2)

文章目录 TCP协议确认应答超时重传连接管理断开连接 TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol").⼈如其名,要对数据的传输进⾏⼀个详细 的控制; TCP协议段格式 • 源/目的端口号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认…...

Echars3D 饼图开发

关于vue echart3D 饼图开发 首先要先下载 "echarts-gl", 放在main.js npm install echarts-gl --save <template><div class"cointan"><!-- 3d环形图 --><div class"chart" id"cityGreenLand-charts"><…...

【PaddleSpeech】语音合成-男声

环境安装 系统&#xff1a;Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…...

AI-数学-高中-17-三角函数的定义

原作者视频&#xff1a;三角函数】4三角函数的定义&#xff08;易&#xff09;_哔哩哔哩_bilibili 初中&#xff1a; 高中&#xff1a;三角函数就是单位圆上的点的横纵坐标(x0,y0)。 示例1&#xff1a; 规则&#xff1a; 示例2&#xff1a; 示例3.1&#xff1a; 示例3.2 示例4…...

centOS/Linux系统安全加固方案手册

服务器系统:centos8.1版本 说明:该安全加固手册最适用版本为centos8.1版本,其他服务器系统版本可作为参考。 1.账号和口令 1.1 禁用或删除无用账号 减少系统无用账号,降低安全风险。 操作步骤  使用命令 userdel <用户名> 删除不必要的账号。  使用命令 passwd…...

编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程

编程实例分享&#xff0c;眼镜店电脑系统软件&#xff0c;配件验光管理顾客信息记录查询系统软件教程 一、前言 以下教程以 佳易王眼镜店顾客档案管理系统软件V16.0为例说明 如上图&#xff0c; 点击顾客档案&#xff0c;在这里可以对顾客档案信息记录保存查询&#xff0c;…...

完整的 HTTP 请求所经历的步骤及分布式事务解决方案

1. 对分布式事务的了解 分布式事务是企业集成中的一个技术难点&#xff0c;也是每一个分布式系统架构中都会涉及到的一个东西&#xff0c; 特别是在微服务架构中&#xff0c;几乎可以说是无法避免。 首先要搞清楚&#xff1a;ACID、CAP、BASE理论。 ACID 指数据库事务正确执行…...

SpringMVC请求和响应

文章目录 1、请求映射路径2、请求参数3、五种类型参数传递3.1、普通参数3.2、POJO类型参数3.3、嵌套POJO类型参数3.4、数组类型参数3.5、集合类型参数 4、json数据传递4.1、传递json对象4.2、传递json对象数组 5、日期类型参数传递6、响应6.1、响应页面6.2、文本数据6.3、json数…...

AIGC实战——深度学习 (Deep Learning, DL)

AIGC实战——深度学习 0. 前言1. 深度学习基本概念1.1 基本定义1.2 非结构化数据 2. 深度神经网络2.1 神经网络2.2 学习高级特征 3. TensorFlow 和 Keras4. 多层感知器 (MLP)4.1 准备数据4.2 构建模型4.3 检查模型4.4 编译模型4.5 训练模型4.6 评估模型 小结系列链接 0. 前言 …...

Django_基本增删改查

一、前提概述 通过项目驱动来学习&#xff0c;以图书管理系统为例&#xff0c;编写接口来实现对图书信息的查询&#xff0c;图书的添加&#xff0c;图书的修改&#xff0c;图书的删除等功能。&#xff08;不包含多重信息的校验&#xff0c;只为了熟悉增删改查接口的实现流程&a…...

数仓治理-存储资源治理

目录 一、存储资源治理的背景 二、存储资源治理的流程及思路 三、治理前如何评估 3.1 无用数据表/临时数据表下线评估 3.2 表及分区的生命周期评估 3.3 存储及压缩格式评估 3.4 根据业务场景实现节省存储评估 四、治理后的成效如何评估 一、存储资源治理的背景 由于早…...

Linux系统安全:安全技术 和 防火墙

一、安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全决策依据,类 似于监控…...