| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 串网直通车——网口篇(Python+socket+threading) -> 正文阅读 |
|
[网络协议]串网直通车——网口篇(Python+socket+threading) |
????????本章节是续前篇(界面篇)。如未搭建界面,请查阅以下链接。 ????????串网直通车——界面篇(Python+Tkinter)_不尽之野火-CSDN博客 ????????本章节主要是实现网口的UDP功能,实现网口收发数据。类似网络调试助手。 1、打开网口? ? ? ? Python使用网口功能以及线程功能,需要在开头引入。结合前篇(界面篇),需要在开头引入全局变量。
????????将以下代码替换到界面篇的net_ctrl函数。整体替换。 ? ? ? ? 这个函数中nn_var,lip_var,lp_var,oip_var,op_var,nl_var,p0,p1都是通过按钮操作传递过来,读取下拉菜单的值。 ? ? ? ? nn_var是按钮控件名? ? ? ? ? lip_var是本地IP地址 ? ? ? ? lp_var是本地端口号 ? ? ? ? oip_var是远程IP地址 ????????op_var是远程端口号 ????????nl_var是指示灯控件 ? ? ? ? p0是红灯图片 ? ? ? ? p1是绿灯图片 ? ? ? ?函数中,recv_net_data是用来定义接收线程。接收函数是thread_net_recv,后续有讲解。创建线程是为了实现接收一直起作用,程序并与界面显示并行运行。 ? ? ? ? 代码经过优化,经测试达到0错误。代码中多次使用if和else pass组合。是因为参考其他程序时,发现有错误,无法正常停止网口,端口号一直被占用。而且在else之后绑定网口的udp_socket无法继续使用。如有大神能够知道原因,请在评论区告知,在此感谢!
2、接收? ? ? ? 接收函数整体添加即可。这部分对应打开网口的thread_net_recv函数。 ? ? ? ? 代码中net_text.see(END),see是用于ScrolledText滚动条文本框控件的光标移动,使得滚动条随着接收数据的增多而移动至最后。此部分结合界面篇的带滚动条文本框部分。 ? ? ? ? 代码中使用了try和except Exception:break的组合,作用在于接收时,防止接收函数recvfrom()导致出错。出错时会有退出机制。其他网上代码存在此部分不完善的地方。这部分导致停止运行时无法正常停止。必须强制关闭运行进程。 ? ? ? ? 代码中“停止接收线程”备注那部分,作用是点击按钮关闭时,能够跳出线程,并终止。因为接收代码运行时,一直在while循环。其他网上代码存在此部分不完善的地方。必须强制关闭运行进程,否则网口端口号一直出错而占用。 ? ? ? ? 代码中的decode是解码。 ? ? ? ? 此部分代码提到的net_send函数,后续会讲解到。只测试接收时,可以先屏蔽。 ? ? ? ? 特别注意:此部分代码测试时,不能直接点击窗口右上角关闭,必须优先点击关闭网口按钮,再关闭窗口。
插节如果程序一直运行,不知道什么错误,如图所示,可以强制停止。我用的是VScode+python3.8。 ? 3、发送? ? ? ? ?这部分的代码直接添加即可。此部分结合接收函数使用测试。 ? ? ? ? 代码中encode是编码。ns_var是字符串,目的地址opposite_addr(IP+端口号)引用之前变量,只引用不改变参数,无需使用global。
4、测试????????可用网络调试助手配合从测试。测试效果如图所示。 ?5、拓展? ? ? ? 在学习过程,参考了不少资料,也填了不少坑。在此感谢各位前辈们的付出。经过整理筛选后,同样将有用的分享给大家! python socket recv超时_如何用python实现接收UDP方式的网络通信数据_weixin_39999025的博客-CSDN博客 Python网络通信(1)— UDP通信_Willliam_william的博客-CSDN博客Python网络通信https://so.csdn.net/so/search?q=Python%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1&t=blog&u=qq_38113006 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:54:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |