您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:12-26来源:作者:董付国点击数:

为更好地保证教学质量和提高学生的学习积极性,我使用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)

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门