计算机网络综合实训——网络程序设计

news2024/9/21 20:51:54

在这里插入图片描述
计算机网络综合实训
网络程序设计

作者姓名
学号
所在院系 计算机与信息工程学院
学科专业名称 计算机科学与技术
导师及职称 柯宗武 教授
提交时间 2023/05/28

仿qq聊天的设计与实现
(指导教师,柯宗武 教授)
(湖北师范大学计算机与信息工程学院 中国 黄石 435002)

一、实训目的
编写一个类似于QQ聊天的网络程序。通过仿qq聊天室的设计与实现将计算机网络应用到实处,从而更好的理解和掌握计算机网络。
二、相关技术
1、配置环境
操作系统:windows11
编程语言:java jdk11
编译器:IDEA
2、JAVA实现互动聊天程序
1、用JFrame制作客户端和服务端的界面
2、使用Socket网络编程TCP协议完成数据传输
3、监听发送按钮的点击事件,实现点击发送按钮发送消息
4、监听键盘点击事件,实现点击回车键发送消息
3、Socket
Socket(套接字)是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序),各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的Socket(套接字)中,该Socket(套接字)通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的Socket(套接字)中,使对方能够接收到这段信息。 Socket(套接字)是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。
4、TCP协议
TCP是面向连接的运输层协议。应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)TCP 提供可靠交付的服务。通过TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达TCP提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。
在这里插入图片描述
图2-1 TCP通信

三、需求分析
对于程序的设计过程中可行性分析是重中之重,优秀的分析可以极大的节约成本,为开发的顺利铺垫坚实的道路。因此要对系统分别进行技术可行性、经济可行性全面分析。
1.技术可行性
通过系统设计相关技术分析,多方面能够反映了技术的可行性。另外,即时通讯系统的开发已经很多的实例,技术的要求度并不高,各类进行开发的软件获取并不困难,所以该项目成功开发是可行的。
2.经济可行性
从经济方面观察,该实训经济,并且对于开发初学者来说是有一定参考价值的,所以通过以上两方面来看这一点是可行的。
3.项目概述
该项目是一个初步项目,实现小型聊天室,用户可以自己注册账户并且登录,账户数据储存在数据库中,登录完成后便进入聊天界面,聊天功能是基于websocket实现的,WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。即实现了全双工通信。
四、详细设计
本系统运用socket开发技术作为构建信息传递的通道,只需在IDEA JAVA环境中开发程序即可。完成界面搭建,要实现互动聊天,然后需要两个程序:一个服务端(Server),一个客户端(Client),搭建基本一致。
1、部分代码


```java
//Server
public static void main(String[] args)throws Exception{
    Socket socket=new Socket("127.0.0.1",8899);
    Client client=new Client();
    OutputStream out=socket.getOutputStream();
    BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    writer=new PrintWriter(out,true);
//Client
public static void main(String[] args)throws Exception{
    Server server=new Server();
    ServerSocket serverSocket=new ServerSocket(8899);
    System.out.println("Starting listening...");
    while (true){
        Socket socket=serverSocket.accept();
        //获取客户端主机名
        InetAddress address=socket.getInetAddress();
        String name=address.getLocalHost().getHostName();
        System.out.println(name+"已连接");
        BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        writer=new PrintStream(socket.getOutputStream(),true);

2、演示效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、实验总结
1、websocket的端口一定要和tomcat的端口一致!否则websocket不能正常启动!
2、所有依赖的包一定放入tomcat的lib包中,否则会找不到依赖的包!
3、经过此处实训,更好地掌握学会计算机网络相关知识。回顾整个过程,我感觉对于以往所学的知识又有了新的体会。

.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【特征检测器】检测器

检测器 1. Shi-Tomasi 检测器1.1 算法特点:1.2算法步骤1.3 8-邻域非最大抑制算法 1. Shi-Tomasi 检测器 1.1 算法特点: Shi-Tomasi 检测器使用了 Harris 算法的改良版,在处理图像边缘时具有更好的性能表现,能够检测出更多的稳定…

【kali学习笔记】信息收集之搜索引擎的使用技巧

一、Google 搜索引擎的使用技巧 1、Google 常用语法说明 site 指定域名 inurl URL 中存在的关键字页面 intext 网页内容里面的关键字 Filetype 指定文件类型 intitle 网页标题中的关键字 link 返回你所有的指定域名链接 info 查找指定站点信息 cache 搜索 Google 里的内容缓存…

【账号篇】华硕电脑-华硕账号注销教程

【账号篇】华硕电脑-华硕账号注销教程 手机号和邮箱号注册的华硕账户无法合并,无法互相关联,需要数据同步的可以选择先注销删除其中一个账号再关联—【蘇小沐】 文章目录 【账号篇】华硕电脑-华硕账号注销教程1.实验环境 (一)华硕…

(二叉树) 116. 填充每个节点的下一个右侧节点指针 ——【Leetcode每日一题】

❓ 116. 填充每个节点的下一个右侧节点指针 难度:中等 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 …

MySQL 高级语句二

目录 表连接查询内连接 inner join左连接 left join右连接 right join 表的自我连接 (算排名)view 的视图的运用union 联级union(合并后去重)union all (合并后不去重) 多种方式求表与表的交集值取两个SQL语…

基于spss的多元统计分析 之 实例1(挤压塑料胶卷的最优工艺研究)(6/8)

挤压塑料胶卷的最优工艺研究 摘要 多元方差分析是同时分析多个响应变量和一个共同预测变量集之间关系的检验。与方差分析一样,多元方差分析需要连续响应变量和类别预测变量。与运行多个方差分析(一次一个响应变量)相比,多元方差分…

综合专题学期实训IV综合报告

综合专题学期实训IV综合报告 题目 基于Java的聊天系统设计与实现 所在院系 计算机与信息工程学院 学科专业名称 计算机科学与技术 导师及职称 夏端峰(副高)、黄烜(讲师) 撰写时间 2023年6月16日 目 录 1 概述 1 2 相关技术 1 2.…

2-2 A pretrained model that fakes it until it makes it

1.The GAN game Let’s suppose, for a moment, that we’re career criminals who want to move into selling forgeries of “lost” paintings by famous artists. We’re criminals, not painters, so as we paint our fake Rembrandts and Picassos, it quickly becomes a…

【系统开发】尚硅谷 - 谷粒商城项目笔记(九):Sentinel高并发方法论

文章目录 Sentinel高并发方法论Sentinel是什么?基本概念及作用整合SpringBoot引入Sentinel依赖下载Sentinel控制台cmd启动Sentinel配置Sentinel控制台地址信息在控制台设置流控规则规则持久化流量监控自定义流控返回数据适配Feign,并加上熔断保护方法自定…

CorelDRAW2023最新工作室Win版矢量图形编辑与排版工具软件

CorelDRAW简称CDR,是一款专业的平面设计软件,专注于矢量图形编辑与排版。ps和cdr是常用的两款平面设计软件,一直以来深受广大设计师的喜爱,但仍然有很多小伙伴不知道它们之间的区别。那初学者先学ps还是cdr,初学者cdr哪个版本好?我…

【openGauss高级数据管理】--略有小成

【openGauss高级数据管理】--略有小成 🔻 一、openGauss高级数据管理🔰 1.1 约束⛳ 1.1.1 NOT NULL约束⛳ 1.1.2 UNIQUE约束⛳ 1.1.3 PRIMARY KEY⛳ 1.1.4 FOREIGN KEY⛳ 1.1.5 CHECK约束 🔰 1.2 JOIN⛳ 2.3.1 CROSS JOIN---交叉连接⛳ 1.2.1…

基于spss的多元统计分析 之 实例2(挤压塑料胶卷的最优工艺研究)(7/8)

主成分分析 摘要 主成分分析是利用降维的思想,把多指标转化为少数几个综合指标的多元统计分析方法。 对同一个个体进行多项观察时,必定涉及多个随机变量,它们都是相关的,一时难以综合。这时就需要进行主成分分析来概括诸多信息…

7.延时消息与原理探究

highlight: arduino-light 4.3 延时消息 延迟消息对应的Topic是SCHEDULETOPICXXXX,注意就是SCHEDULETOPICXXXX,XXXX不是某某某的意思。 SCHEDULETOPICXXXX的队列名称是从2开始到17,对应的delayLevel为3到18,3对应10s,18对应2h,在类…

因为计算机中丢失mfc140.dll无法启动修复步骤分享

计算机报错提示mfc140.dll无法启动是怎么回事?mfc140.dll是什么文件,为什么会影响到软件程序的运行?相信你也有不少困惑,遇到这个情况不用慌,小编下面就分享关于mfc140.dll丢失的详细修复步骤以及mfc140.dll是什么。 mfc140.dll是…

java中集合类forEach删除元素报错:ConcurrentModificationException

如题所示,我们在java开发中,可能会有这样的一种情况,一个集合使用完了,我们想删除里面所有的元素,可能会遍历他们,然后依次调用删除操作。最简单的我们使用forEach遍历。 示例如下: public cla…

EasyCode代码生成插件-模板分享(基于数据表生成MyBatisPlus格式的dao,service,controller和vue组件)

目录 概述 使用演示 模板代码 实体类pojo 表现层controller 业务层service接口 业务层serviceImpl实现类 持久层dao Vue组件 概述 本片博客用于分享EasyCode的自定义模板(模板在篇末),用于简化开发,免去重复性的工作。 …

SQL 基础语句

SQL 基础语句 DDL Data Definition Language 数据定义语言创建 create删除 drop修改 alter清空 truncate show tables ; --查看所有表: drop database db1; --删除数据库 create database db1 default character set utf8; --创建数据库 use databas…

【统信uos-server-20-1060e】-详细安装openGauss

【统信uos-server-20-1060e】-详细安装openGauss 🔻 前言🔻 一、安装前准备🔰 1.1 openGauss安装包下载🔰 1.2 安装环境准备⛳ 1.2.1 硬件环境要求⛳ 1.2.2 软件环境要求⛳ 1.2.3 软件依赖要求⛳ 1.2.4 关闭操作系统防火墙、selin…

Redis 2023面试5题(四)

一、AOF 持久化(Append Only File)如何配置? AOF(Append Only File)持久化是 Redis 的一种持久化方式,它通过记录所有收到的写命令来保存数据。以下是一些关于如何配置 AOF 持久化的重要信息: …

Linux系统下使用移动硬盘或者U盘,如何挂载硬盘分区到Linux系统

本文目录 1、查看当前磁盘分区状态2、查看当前磁盘的挂载状态3、将磁盘挂载到指定目录下4、从文件系统里卸载磁盘 Linux系统里,除根目录以外,任何文件或者目录要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作…