当前位置: 首页 > news >正文

网络编程及项目思路

计算机和计算机之间通过网络进行数据传输

常见的软件架构:

C/S:客户端/服务器

  • 画面可以做的非常精美,用户体验好
  • 需要开发客户端,也需要开发服务端
  • 用户需要下载和更新的时候太麻烦

B/S:浏览器/服务器

  • 不需要开发客户端,只需要页面+服务端
  • 用户不需要下载,打开浏览器就能使用
  • 如果应用过大,用户体验收到影响

网络编程三要素

IP

  • 设备在网络中的地址,是唯一的标识

IPv4是目前的主流方案,目前已经用完了

IPv6是为了解决IPv4不够用而出现的

特殊IP地址:127.0.0.1,也可以是localhost:是回送地址也称本地回环地址,也称本机IP,永远只会寻找当前所在本机。

常用的CMD命令:

ipconfig:查看本机IP地址

ping:检查网络是否连通

端口号

  • 在设备中的唯一标识

由两个字节表示的整数,取值范围:0~65535

其中0~1023之间的端口号用于一些知名的网络服务或者应用

我们自己用1024以上的端口号

应该端口号只能被一个应用程序使用

协议

  • 数据在网络中传输的规则,常见的协议:UDP、TCP、http、https、ftp

计算机网络中,连接和通信的规则被称为网络通信协议

TCP/IP参考模型

UDP协议(用户数据报协议)

是面向无连接的通信协议,不管用户是否收到

速度快,有大小限制,一次最多发送64K,数据不安全,易丢失数据

发送数据

  • 创建发送端的DatagramSocket对象

创建对象时:

绑定端口,就是通过这个端口往外发送

空参:所有可用的端口随机一个进行使用

有参:指定端口号进行绑定

  • 数据打包
  • 发送数据
  • 释放资源

UDP的三种通信方式:

单播:以前的代码就是单播

组播:组播地址:224.0.0.0~239.255.255.255,其中224.0.0.0~224.0.0.255为预留的组播地址

广播:广播地址:255.255.255.255

接收数据

  • 创建端的DataGgramSocket对象

在接受的时候,一定要绑定端口

而且绑定的端口一定要和发送的端口保持一致

  • 接受打包好的数据
  • 解析数据包
  • 释放资源

TCP协议(传输控制协议)

是面向连接的通信协议

速度慢,没有大小限制,数据安全

项目设计思路

用户系统:

  • 登录
  • 注册
  • 忘记密码

课堂互动:

  • 签到
  • 抢答
  • 随机选人

学生:

  • 写作业:图片、文件、文字
  • 加入班级
  • 下载资料

教师:

  • 发布资料
  • 创建班级

作业:

  • 发布作业:主观题、选择题
  • 打回作业
  • 批改作业
  • src
    • sample
      • fxml
      • images
    • java
      • controllers
      • models
      • services
      • utils

FXML文件:

  • login.fxml(登录)
  • registerTeacher.fxml(注册)
  • ForgetPassword(忘记密码)
  • ClassroomInteraction.fxml(班级)
  • CreateClass.fxml(创建班级)
  • JoinClass.fxml(加入班级)
  • StudentDashboard.fxml(学生总表)
  • TeacherDashboard.fxml(老师总表)
  • RandomSelection.fxml(随机选人)
  • PublishHomework.fxml(发布作业)
  • HomewordSubmission.fxml(提交作业)
  • DownloadFiles.fxml(下载文件)
  • RejectHomework.fxml(打回作业)
  • CorrectHomework.fxml(批改作业)

Models软件包:

  • User.java
  • Student.java
  • Teacher.java
  • Classroom.java
  • File.java
  • Homework.java
  • HomeworkSubmission.java

Services软件包:

  • UserService.java
  • ClassroomSevice.java
  • FileSevice.java
  • HomeworkService.java

Utils软件包:(工具类)

数据库

1.用户表(user)

  • id(用户ID,主键)
  • username(用户名)
  • email(邮箱)
  • password(密码)
  • userTyte(用户类型)

2.班级表(class)

  • id(班级ID,主键)
  • name(班级名称)
  • teacher_id(教师ID,外键)

3.用户-班级表

  • id(关系ID,主键)
  • user_id(用户ID,外键)
  • class_id(班级ID,外键)

4.作业表(homework)

  • id(作业ID,主键)
  • class_id(班级ID,外键)
  • content(作业内容)
  • type(作业类型:主观题、选择题)
  • createDate(发布时间)
  • dueDate(截止时间)

5.学生作业表

  • id(学生作业ID,主键)
  • user_id(用户ID,外键)
  • homework_id(作业ID,外键)
  • submissionType(提交类型:图片,文字,文件)
  • status(作业状态:未提交,已提交,已打回,已批改)
  • updated(更新时间)

6.课堂互动表

  • id(资料ID,主键)
  • class_id(班级ID,外键)
  • teacher_id(教师ID,外键)
  • type(类型:签到、问题抢答、随机选人)
  • update(更新时间)

7.发布的资料表(materials)

  • id(资料ID,主键)
  • class_id(班级ID,外键)
  • teacher(教师ID,外键)
  • title(标题)
  • file(文件路径)
  • update(更新时间)

http://www.lryc.cn/news/60891.html

相关文章:

  • GD(兆易创新)系列FLASH进行FPGA和ZYNQ配置固化相操作
  • 通过一个小例子来看一下C语言指针 p、*p、p、*p、*p分别代表什么
  • 【内摹访谈】谈谈AI爆发前夜的B端设计
  • Redis—AOF持久化
  • OpenCV实例(五)指纹识别
  • 第二章 法的内容与形式
  • 外包干了四年,感觉废了..
  • Git如何推送当前代码到远程仓库
  • 第五章 工厂模式
  • Spring MVC 参数解析(13)
  • 探索 Qt WebEngineWidgets:从底层原理到高级应用与技巧
  • leetcode160. 相交链表
  • 核心业务7:放款实现
  • STM32F4系列芯片RTC模块介绍
  • MySQL 在线人数 场景分析
  • 使用mybatis和dynamic-datasource-spring-boot-starter动态切换数据源操作数据库
  • 【日常刷题】迷宫问题
  • 【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)
  • C++ | 认识标准库string和vector
  • JAVA面试宝典: SpringCloud知识点(通俗易懂易背)
  • es学习笔记
  • SAS学习第9章:卡方检验之适合性检验与独立性检验
  • 马斯克爆料Twitter裁了八成员工;OpenAI CEO:GPT-5根本不存在;小鹏被曝年终奖打0.5折 | AI一周资讯
  • ASEMI代理ADG1408YRUZ-REEL7原装ADI车规级ADG1408YRUZ-REEL7
  • phpstudy本地环境搭建图文教程
  • 【UE 控件蓝图】菜单及功能实现
  • Java 并发编程面试题——Future
  • SpringBoot 介绍
  • 自动驾驶作业手册
  • MySQL调优笔记——慢SQL优化记录(2)