2025年1月22日(网络编程 udp)

devtools/2025/2/6 9:58:42/

系统信息:

ubuntu 16.04LTS
Raspberry Pi Zero 2W
系统版本: 2024-10-22-raspios-bullseye-armhf
Python 版本:Python 3.9.2
已安装 pip3
支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480)
已安装 vim
已安装 git


学习目标:


学习内容:

CA CE
udp 基本使用

在这里插入图片描述

循环发送

在这里插入图片描述

循环发送

python">import socketdef main():# 1. 创建套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定本地信息udp_socket.bind(("192.168.0.178", 8080))# 3. 接收数据recv_data = udp_socket.recvfrom(1024)# 4. 打印接收的数据# 元组# (b'Welcome to NetAssist', ('192.168.0.178', 8081))print(recv_data)# 5. 关闭套接字udp_socket.close()if __name__ == "__main__":main()

解析接收的数据

python">import socketdef main():# 1. 创建套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定本地信息udp_socket.bind(("192.168.0.178", 8080))while True:# 3. 接收数据recv_data = udp_socket.recvfrom(1024)# 4. 打印接收的数据# 元组# (b'Welcome to NetAssist', ('192.168.0.178', 8081))print(recv_data)recv_msg = recv_data[0]recv_addr = recv_data[1]print("%s : %s" % (str(recv_addr), recv_msg.decode("utf-8")))# BUGif recv_msg.decode("utf-8") == "exit":break# 5. 关闭套接字udp_socket.close()if __name__ == "__main__":main()

绑定端口发送数据

python">import socketdef main():# 创建一个 udp 套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定本地信息udp_socket.bind(("192.168.0.178", 8080))while True:# 发送的数据send_data = input("请输入:")# 用户选择关闭if send_data == "exit":break# 收发数据udp_socket.sendto(send_data.encode("utf-8"), ("192.168.0.178", 8081))# 关闭套接字udp_socket.close()if __name__ == "__main__":main()

请添加图片描述

在使用 Python 的 socket 模块进行网络编程时,可能会遇到阻塞(blocking)问题。阻塞通常发生在网络 I/O 操作中,例如 recv() 或 accept() 方法,这些操作会等待数据到达或客户端连接,导致程序暂停执行。

在通信和数据传输中,单工、半双工和全双工是三种不同的通信模式。它们的主要区别在于数据传输的方向性。以下是这三种模式的简要说明:

1. 单工 (Simplex)

  • 定义:单工通信是指数据只能单向传输的模式。信息只能从发送方传输到接收方,接收方无法向发送方发送信息。
  • 例子:电视广播、传统的广播电台。

2. 半双工 (Half-Duplex)

  • 定义:半双工通信允许数据在两个方向上传输,但不能同时进行。在任何时刻,数据只能在一个方向上传输。
  • 例子:对讲机、一些无线通信设备。

3. 全双工 (Full-Duplex)

  • 定义:全双工通信允许数据在两个方向上同时传输。发送方和接收方可以同时发送和接收信息。
  • 例子:电话通话、现代网络通信(如以太网)。

总结表

通信模式传输方向示例
单工单向电视广播
半双工双向(不同时)对讲机
全双工双向(同时)电话通话

这些通信模式在不同的应用场景中有各自的优势和局限性,选择合适的模式可以提高通信效率和效果。

udp聊天

python">import socketdef send_data(udp_socket):sd_data = input("请输入:")udp_socket.sendto(sd_data.encode("utf-8"), ("192.168.0.178", 8081))def recv_data(udp_socket):rv_data = udp_socket.recvfrom(1024)# 打印接收的数据recv_msg = rv_data[0]recv_addr = rv_data[1]print("%s : %s" % (str(recv_addr), recv_msg.decode("utf-8")))def main():# 创建一个 udp 套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)udp_socket.bind(("192.168.0.178", 8080))while True:print("--- 选项 ---")print("1.发送")print("2.接收")print("3.退出")print("-----------")op = input("请输入:")# 发送的数据if op == "1":send_data(udp_socket)# 收数据elif op == "2":recv_data(udp_socket)elif op == "3":breakelse:print("输入有误")# 关闭套接字udp_socket.close()if __name__ == "__main__":main()

http://www.ppmy.cn/devtools/156513.html

相关文章

Spark--算子执行原理

一、sortByKey SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。 内部执行流程 1、创建RangePartitioner part&…

FBX SDK的使用:基础知识

Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…

[CMake]报错: Qt requires a C++17 compiler

1.报错: #error 指令: "Qt requires a C17 compiler, and a suitable value for __cplusplus. On MSVC, you must pass the /Zc:__cplusplus option to the compiler." 2.解决 Qt5项目升级到Qt6项目,cmake需要做兼并配置; # 设置…

中国城商行信贷业务数仓建设白皮书(第一期:总体规划)

一、项目背景与行业现状 1.1 国内城商行信贷业务痛点 2024年统计数据显示:全国134家城商行平均历史数据处理延迟达37小时/次 传统Oracle架构日均处理能力上限仅为320万笔交易 客户特征维度不足(现行系统平均维护86个客户标签) 监管报表生成耗时超同业股份制银行2.3倍 1.2 H…

基于微信小程序的消防隐患在线举报系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

python 小游戏:扫雷

目录 1. 前言 2. 准备工作 3. 生成雷区 4. 鼠标点击扫雷 5. 胜利 or 失败 6. 游戏效果展示 7. 完整代码 1. 前言 本文使用 Pygame 实现的简化版扫雷游戏。 如上图所示,游戏包括基本的扫雷功能:生成雷区、左键点击扫雷、右键标记地雷、显示数字提示…

【怎么用系列】短视频戒除-1-对推荐算法进行干扰

如今推荐算法已经渗透到人们生活的方方面面,尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨,慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…

基于单片机的超声波液位检测系统(论文+源码)

1总体设计 本课题为基于单片机的超声波液位检测系统的设计,系统的结构框图如图2.1所示。其中包括了按键模块,温度检测模块,超声波液位检测模块,显示模块,蜂鸣器等器件设备。其中,采用STC89C52单片机作为主控…