社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Python小屋 • 6 年前 • 459 次点击  

本文代码来自于我自己使用开发的一套课堂管理系统,界面是用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




今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/PgfPSviwHl
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3724
 
459 次点击