Giter Club home page Giter Club logo

hyperion's Introduction

Hyperion

a simple socket server/client for college courses check-in

项目简介

采用Java编写的用于大学课堂电脑签到的桌面应用程序系统与服务器软件,使用JavaFX作为桌面应用的用户界面,利用TCP/UDP/ARP等协议进行服务器与客户端间的信息交互。

1 2 3 4

整体架构与设计思路

签到的基本原理是学生通过发送学号与电脑的MAC地址,在教师处进行检测是否是学生本人本机进行的签到行为。

整个项目系统分为三个子项目:学生端、教师端与专用服务器端。其中学生端是纯客户端,教师端既可以作为服务器端也可以作为客户端,专用服务器端是纯服务器端。

整个系统存在两种运行模式:本地服务器模式与专用服务器模式。两种模式互相独立,使用时必须采取且只能采取一种模式运行。

本地服务器模式:仅使用学生端与教师端,且这两者都需要在软件用户界面内且换到本地服务器模式。在该模式下认为,学生与教师位于同一教室之内,其网络则必然处于同一子网之下,此时需要教师端先打开,默认会开启UDP数据报的端口监听,然后教师设置好签到班级与签到次数,本地服务器状态转换到签到状态。学生通过UDP广播的方式找到同一网段中的教师端,发送学号与自机MAC地址完成签到。

专用服务器模式:使用学生端、教师端与专用服务器端,且前两者都作为客户端,需要在软件用户界面内且换到专用服务器模式。在该模式下,老师可以不用与学生处于同一子网下,且服务器不需要教师端启动才能启动,而是长期运行在一个具有公网IP的专用服务器(VPS)上。当教师需要签到时,启动教师端,设置好专用服务器IP地址,建立连接之后发送学生所在子网的默认网关的MAC地址作为位置依据,并设置好班级与签到次数,开启一次签到。专用服务器端收到教师发送的MAC地址与班级、次数,状态转换到签到状态。学生通过TCP/IP连接专用服务器端,发送学号、自机MAC地址与默认网关MAC地址完成签到。

服务器(本地、专用)返回数据意义:

0 - 签到成功

1 - 签到失败,学号与MAC地址不匹配

2 - 重复签到

3 - 本轮签到已关闭或未开启

服务器状态:

0 - 已启动,未开启签到

1 - 已启动,开启签到

专用服务器端接收分类:

0 - 来自学生的报文

1 - 来自教师的报文

任务:

(System)整体架构搭建(√)

(GUI - JavaFX)学生端图形用户界面(√)

(GUI - JavaFX)教师端图形用户界面(√)

(ARP)获取得到默认网关MAC地址(√)

(UDP)本地服务器模式 - 学生端(√)

(TCP)专用服务器模式 - 学生端(√)

(UDP)本地服务器模式 - 教师端(√)

(UI - CommandLine)专用服务器端用户界面(√)

(TCP)专用服务器模式 - 教师端(√)

(TCP)专用服务器模式 - 专用服务器端(√)

(Security)传输数据加密(√)

hyperion's People

Contributors

artemischief avatar asrielmao avatar callmebigben avatar

Stargazers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.