前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Python的电子教室软件中远程关机功能的原理与实现

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

作者头像
Python小屋屋主
发布2018-04-16 15:19:44
1.4K0
发布2018-04-16 15:19:44
举报
文章被收录于专栏:Python小屋Python小屋

为更好地保证教学质量和提高学生的学习积极性,我使用Python开发了一套课堂教学管理系统,具有在线点名、在线答疑、随机提问、在线作业管理、在线自测、在线考试、数据汇总、试卷生成、屏幕广播等功能,前几天又增加了远程关机功能。教师端运行界面如下图所示:

学生端运行界面如下图所示:

该系统投入使用已有4个学期,效果非常好,不仅可以满足上课的各种需要,还可以作为“Python程序设计”课程的一个完整教学案例讲给学生,适用教材包括《Python程序设计基础》(董付国编著,清华大学出版社)、《Python程序设计(第2版)》(董付国编著,清华大学出版社)、《Python可以这样学》(董付国著,清华大学出版社)。本文重点介绍局域网内远程关机功能的技术要点,系统界面使用tkinter编写,教师端使用UDP协议向局域网内所有主机广播关机指令,同时所有学生端监听UDP端口,收到关机指令后关闭本地计算机。文中略去了有关标准库和扩展库的导入代码。

1、学生端启动之后,创建Socket并监听特定端口,如果收到屏幕广播指令就启动接收广播屏幕的线程,如果收到关机指令就关闭本地计算机。代码目前只考虑了Windows平台,其他系统可以在此基础上自行扩展。

# 使用UDP监听,等待服务器的广播指令

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'startBroadCast':

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

elif data == b'shutdown':

import platform

if platform.platform().startswith('Windows'):

command = r'shutdown /s /f'

os.system(command)

sock.close()

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

2、教师在下课后单击教师端软件界面上的“关闭所有学生机器”按钮,向局域网内所有计算机发送关机指令。

def onbuttonShutdownClick():

result = tkinter.messagebox.askyesno('远程关机',\

'确定要关闭所有学生机器吗?')

if result == tkinter.YES:

# 通知客户端关机

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'shutdown', (IP, 10000))

buttonShutdown = tkinter.Button(root,\

text='关闭所有学生机器',\

command=onbuttonShutdownClick)

buttonShutdown.place(x=240, y=340, width=100, height=30)

单击教师端界面上的“关闭所有学生机器”之后,会弹出确认按钮,单击“是”之后,会关闭局域网内所有计算机。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档