0
点赞
收藏
分享

微信扫一扫

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


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


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

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

def closeWindow():

'警告',\

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

return

'WM_DELETE_WINDOW', closeWindow)

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


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

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

教师端相关代码为:

def closeWindow():
# 教师端关闭时,广播消息通知学生端自动关闭
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
'.')]+'.255'
b'close', (IP, 10000))
     root.destroy()
'WM_DELETE_WINDOW', closeWindow)
 
学生端相关代码为:
def udpListen():
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 监听本机10000端口
'',10000))
while True:        
         data, addr = sock.recvfrom(100)
# 收到服务器发来的广播指令
if data == b'close':
# 教师端关闭时,学生端自动关闭
             root.destroy()
     sock.close()
 threading.Thread(target=udpListen).start()



举报

相关推荐

0 条评论