网络编程及项目思路

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

常见的软件架构:

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参考模型

网络编程及项目思路_第1张图片

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软件包:(工具类)

你可能感兴趣的:(Java,服务器,运维)