使用python:循环发送测试报文
情景使用python:循环发送测试报文udp 单播本机192.9.2.77 接收端口: 6000 发送端口:6001对方 : 192.9.2.78 接收端口 6000 发送端口:6001编写一个程序两个电脑运行一个是本机一个是对方。本机与对方的区别只是ip地址不同。把ip地址以配置文件形式来存储吧。逻辑本机接收到数字a则返回a1.对方逻辑与本机一样接收到数字a,则返回a1.接收到信息后延时一秒再发送。网络拓扑┌─────────────────────┐ UDP ┌─────────────────────┐ │ 本机 PC1 │ (单播通信) │ 对方 PC2 │ │ IP: 192.9.2.77 │ ◄──────────────────► │ IP: 192.9.2.78 │ │ │ │ │ │ 接收端口: 6000 │ │ 接收端口: 6000 │ │ 发送端口: 6001 │ │ 发送端口: 6001 │ └─────────────────────┘ └─────────────────────┘核心逻辑两台电脑运行同一个程序唯一的区别是配置文件中的IP 地址不同。通信流程程序在6000端口监听接收数据接收到数字a后延时 1 秒从6001端口向对方的6000端口发送a1循环往复这样两台机器互相 ping-pong数字不断递增1 → 2 → 3 → 4 → ...模拟测试一个是windows另一个是虚拟机里的Debian# -*- coding: utf-8 -*- UDP 单播 ping-pong 测试程序 - 本机接收端口 recv_port(6000)发送端口 send_port(6001) - 收到数字 a延时 1 秒后返回 a1 - 输入 send 发送起始数字 1 - CtrlC 退出 import socket import time import json import threading def load_config(pathconfig.json): with open(path, r, encodingutf-8) as f: return json.load(f) def recv_loop(recv_sock, send_sock, peer_ip, recv_port): 接收线程收到数字 a - 延时1秒 - 发送 a1 while True: try: data, addr recv_sock.recvfrom(1024) msg data.decode(utf-8, errorsignore).strip() try: num int(msg) except ValueError: print(f\n[警告] 收到非数字数据: {msg!r} (来自 {addr[0]}:{addr[1]})) continue print(f\n[接收] 来自 {addr[0]}:{addr[1]} 的数字: {num}) time.sleep(1) reply num 1 send_sock.sendto(str(reply).encode(utf-8), (peer_ip, recv_port)) print(f[发送] 延时1秒后回复: {reply} - {peer_ip}:{recv_port}) print( , end, flushTrue) except OSError: break except Exception as e: print(f\n[错误] 接收线程异常: {e}) break def main(): cfg load_config() local_ip cfg[local_ip] peer_ip cfg[peer_ip] recv_port cfg[recv_port] send_port cfg[send_port] # 接收 socket绑定本机接收端口 recv_sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM) recv_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) recv_sock.bind((local_ip, recv_port)) print(f[接收] 已绑定 {local_ip}:{recv_port}) # 发送 socket绑定本机发送端口源端口固定为 send_port send_sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM) send_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) send_sock.bind((local_ip, send_port)) print(f[发送] 已绑定 {local_ip}:{send_port}) print(f[信息] 对方接收地址: {peer_ip}:{recv_port}) print([提示] 输入 send 发送起始数字(1)CtrlC 退出) print( , end, flushTrue) # 启动接收线程 recv_thread threading.Thread( targetrecv_loop, args(recv_sock, send_sock, peer_ip, recv_port), daemonTrue, ) recv_thread.start() # 主线程处理用户输入 try: while True: cmd input().strip() if cmd.lower() send: first_num 1 send_sock.sendto(str(first_num).encode(utf-8), (peer_ip, recv_port)) print(f[发送] 起始发送: {first_num} - {peer_ip}:{recv_port}) elif cmd : pass else: print(f[提示] 未知命令: {cmd!r}请输入 send) print( , end, flushTrue) except KeyboardInterrupt: print(\n[退出] 收到 CtrlC正在关闭...) finally: recv_sock.close() send_sock.close() print([退出] 程序已结束) if __name__ __main__: main()config.json{ local_ip: 192.168.68.1, peer_ip: 192.168.68.132, recv_port: 6000, send_port: 6001 }

相关新闻

AI工业控制系统搭建实战:从边缘计算到模型部署的完整指南

AI工业控制系统搭建实战:从边缘计算到模型部署的完整指南

1. 从零理解AI工业控制系统的真实边界1.1 这套系统到底解决什么问题先把概念说清楚。AI工业控制系统,不是把工厂里原来的PLC、DCS全部推倒重来,而是在已有的控制层之上,叠加一层“会判断、会预测、会自调”的智能决策层。传统工控系统干的是“…

2026/10/3 21:53:48 阅读更多 →
Paperclip架构:React+OpenClaw+Claude Code的轻量AI智能体实践

Paperclip架构:React+OpenClaw+Claude Code的轻量AI智能体实践

1. 项目概述:Paperclip 不是回形针,而是一个被严重误读的 AI 工具链代号 “Paperclip”这个词在当前中文技术社区里,正经历一场典型的语义漂移——它既不是 Office 文档里的那个金属小物件,也不是某款冷门开源库的官方名称&#x…

2026/10/3 21:52:47 阅读更多 →
人工智能训练师高级证书备考:AIGC核心考点与实操经验

人工智能训练师高级证书备考:AIGC核心考点与实操经验

人工智能训练师(高级)这个证书我今年刚考下来,注册、报名、刷题库,前后折腾了快三个月,橙点同学平台上的题我差不多过了三轮,最后理论和实操都是一次性通过。如果你正在准备这个考试,或者正想往…

2026/10/3 21:52:47 阅读更多 →

最新新闻

Telerik Reporting 2023 R2升级实战:前后端兼容与Linux部署避坑

Telerik Reporting 2023 R2升级实战:前后端兼容与Linux部署避坑

最近接了内部管理系统的报表升级任务,要把 Telerik Reporting 从老版本整体迁到 2023 R2,同时解决前端页面白屏、报表服务 404、导出 PDF 在 Linux 服务器上乱码这一串前后端兼容性问题。折腾完那段日子,最大的感受是:这版升级根本…

2026/10/5 3:53:15 阅读更多 →
Java聊天系统设计与实现:Socket多线程通信、JDBC数据库落地与避坑指南

Java聊天系统设计与实现:Socket多线程通信、JDBC数据库落地与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:53:15 阅读更多 →
LUNA16肺结节3D分割一站式:数据准备到推理后处理全流程解析

LUNA16肺结节3D分割一站式:数据准备到推理后处理全流程解析

简介:基于 Pytorch 的 3D 图像分割任务完整工程包,面向医学图像处理与深度学习开发者,以 Luna16 CT 肺结节数据为案例,系统呈现数据准备、模型搭建、训练、验证、测试、评估、可视化与后处理的完整代码思路。资源共 92 个文件&…

2026/10/5 3:53:15 阅读更多 →
Django Rest Framework 实战:从项目设计到性能优化的完整指南

Django Rest Framework 实战:从项目设计到性能优化的完整指南

Django Rest Framework(DRF)这块我从第一次在 Django 项目里硬怼 API 开始就一直在用,陆陆续续踩了不少坑,也沉淀了一套自己比较顺手的设计流程。这篇文章就以“使用 Django Rest Framework 构建 API”为切入点,把从项…

2026/10/5 3:53:15 阅读更多 →
jQuery核心实践:选择器、第一个子元素与name获取全解析

jQuery核心实践:选择器、第一个子元素与name获取全解析

刚入门前端的时候纠结过一个问题:明明原生 JavaScript 写得好好的,为什么非要去学 jQuery?等到真正接手一个老项目,面对十几年前的代码库和一堆$符号满天飞的页面时,才明白这套东西到底有多普及。本文不谈玄虚概念&…

2026/10/5 3:53:15 阅读更多 →
吃豆人AI实战:Minimax、Alpha-Beta剪枝与Expectimax完整解析

吃豆人AI实战:Minimax、Alpha-Beta剪枝与Expectimax完整解析

如果你刷过伯克利CS61B,或者看过AI入门视频,大概率见过那只黄色吃豆人在迷宫里被鬼追得满地图跑的画面。那个场景十有八九就来自CS188的Project 2: Multi-Agents。这个项目是所有CS188课程作业里最有“游戏感”的一个,任务很直接——亲手写出…

2026/10/5 3:52:15 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →