微信号:Python_xiaowu

介绍:清华出版社《Python程序设计》系列教材作者董付国的Python小屋.介绍Python基础语法知识、标准库、扩展库知识,探讨Python在各领域的应用.

Python版课堂管理系统中使用UDP广播远程关闭客户端程序思路与源码

2017-10-12 15:12 董付国

本文代码来自于我自己使用开发的一套课堂管理系统,界面是用tkinter编写的,教师端界面如图所示:


为了防止学生关闭客户端而接收不到屏幕广播,大概3个月前为客户端代码增加了不允许关闭的辅助功能:

def closeWindow():

    tkinter.messagebox.showerror(title='警告',\

                                 message='不许关闭,好好学习!')

    return

root.protocol('WM_DELETE_WINDOW', closeWindow)


这样的话,学生关闭客户端时,就会弹出提示“不许关闭,好好学习!”,而无法关闭程序,如图所示:

但是这样一来,下课后学生端程序仍然无法关闭,这会在一定程度上影响后面上课的同学使用计算机。于是刚刚又进一步修改了教师端和学生端的代码,当下课后教师端关闭时,使用UDP协议向局域网内所有机器发送消息,学生端收到消息后自动关闭。

教师端相关代码为:

def closeWindow():

    # 教师端关闭时,广播消息通知学生端自动关闭

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    IP = serverIP[:serverIP.rindex('.')]+'.255'

    sock.sendto(b'close', (IP, 10000))

    root.destroy()

root.protocol('WM_DELETE_WINDOW', closeWindow)


学生端相关代码为:

def udpListen():

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 监听本机10000端口

    sock.bind(('',10000))

    while True:        

        data, addr = sock.recvfrom(100)

        # 收到服务器发来的广播指令

        if data == b'close':

            # 教师端关闭时,学生端自动关闭

            root.destroy()

    sock.close()

threading.Thread(target=udpListen).start()



------------请假--------------

明天早上8点出门赶飞机去重庆,晚上6点左右到达,后天在重庆大学做4小时Python报告,然后听另外几位老师的报告,周日下午飞机返回烟台,晚上10点左右到达,周一早上第一节课还要上课。未来的3天内可能没有时间发文章了,朋友们可以进入公众号,通过菜单“最新资源”==>“历史文章分类速查表”查看往期文章。



-----------相关阅读---------

Python+tkinter模拟“记住我”自动登录原理

基于Python+tkinter+pygame的音乐播放器完整源码

Python使用tkinter打造自定义对话框完整代码

Python+tkinter动态创建与销毁组件小案例

Python实现屏幕取色器功能

Python编写抽奖式随机提问程序

Python使用tkinter编写图片浏览程序

Python实现倒计时按钮

Python使用tkinter的Treeview组件实现表格功能

详解Python GUI版24点游戏制作过程

Python tkinter版猜数游戏

Python+tkinter实现任意多层级关系的组合框

Python+tkinter+pillow实现屏幕任意区域截图

基于Python的电子教室软件中远程关机功能的原理与实现

Python获取本机所有IP地址

Python实现局域网内屏幕广播的技术要点分析

使用Python开发SQLite代理服务器

Python获取局域网内所有机器IP地址与网卡MAC地址

Python获取本机所有网卡的MAC地址

Python+flask+flask-email发送带附件的电子邮件

Python使用UDP协议打造在线时间服务器

使用Python开发会聊天的智能小机器人

Python使用TCP协议编写会聊天的小机器人

Python实现本机网络流量监视器

Python使用UDP广播实现服务器自动发现



----------喜大普奔----------

1、继《Python程序设计基础》(2017年9月第5次印刷)、《Python程序设计(第2版)》(2017年9月第4次印刷)、《Python可以这样学》(2017年7月第3次印刷)系列图书之后,董付国老师新书《Python程序设计开发宝典》已于2017年8月1日在清华大学出版社出版,并于2017年9月进行了第2次印刷。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3



 
Python小屋 更多文章 Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换 Python花式编程案例集锦(6) Python批量修改Excel文件格式:加粗、颜色交替、渐变背景色填充 KNN分类算法原理与Python+sklearn实现根据身高和体重对体型分类 Python使用pandas读取Excel文件数据和预处理小案例
猜您喜欢 致歉!是我们的错... 大数据江湖的七十二骗(上) 详解 Linux 运维工程师升级之路:中级篇 以创业的心态打工,以打工的心态创业 互联网分布式技术架构 - 1