C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人

一、C/S概念

1.1 什么是C/S

  C/S分布式模式,是计算机用语。C是指Client,S是指Server,C/S模式就是指客户端/服务器模式。是计算机软件协同工作的一种模式,通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。

1.2 C/S与B/S的区别

C/S模式是一种两层结构的系统,第一层是在客户端上安装客户端应用程序,第二层是在服务器上安装应用服务器。在C/S模式的工作过程中,客户端程序请求,服务器程序接收并处理客户端程序请求,并返回结果。

B/S模式,即浏览器/服务器模式,是在传统的两层C/S模式基础上发展起来的一种新的网络结构模式,其本质是三层C/S模式。

在用户的计算机上安装浏览器软件,在服务器上存储数据,安装服务应用程序,如WWW服务器和文件服务器。用户通过浏览器访问服务器,以进行信息浏览、文件传输和电子邮件服务。

两者区别如下:

一、指代不同

  1. C/S:就是指客户端/服务器模式。是计算机软件协同工作的一种模式,采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。

  2. B/S:是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。

二、原理不同

  1. C/S:客户端运行应用程序,服务器端运行服务程序。应用程序向服务程序发出一个应用程序。

  2. B/S:统一客户端,将系统功能实现的核心部分集中到服务器,简化系统的开发、维护和使用。只需在客户机上安装一个浏览器,如NetscapeNavigator或InternetExplorer,服务器就会安装SQLServer、Oracle、MYSQL等数据库。浏览器通过Web服务器与数据库交互。

三、优势不同

  1. C/S:可以充分发挥客户端PC的处理能力,很多工作经过客户端处理后可以提交给服务器。相应的优点是客户端响应速度快。

  2. B/S:总拥有成本低,维护方便,分布强,开发简单。它可以在任何地方操作,而不需要安装任何特殊的软件。

二、主页面

在这里插入图片描述
视频演示:
https://www.bilibili.com/video/BV1Dv41187eW?pop_share=1
代码下载:

百度网盘链接:https://pan.baidu.com/s/1tpVFoOM5XcrKQbM7xf0HNA
提取码:8888

或者源地址:https://www.codeproject.com/Articles/524120/A-Java-Chat-Application

三、介绍

  在本文中,将演示一个聊天应用程序,它可以同时处理多个用户。它还支持文件传输。

它完全基于Java,由两部分组成:jMessenger(客户端应用程序)和jServer(服务器应用程序)。

四、特征

  1. 同时处理多个用户
  2. 支持公共和私人消息
  3. 用户注册和登录可用
  4. 支持文件传输

五、jServer

  jServer主要有两个类分别处理连接和消息:
在启动时SocketServer单独运行在一个线程中,它会监听是否有客户端连接服务器,一旦发现客户端jServer就会创建一个单独的线程去运行ServerThread。
  ServerThread创建后就会持续的监听来自客户端的消息,并将消息交由SocketServer处理。同样,它支持将来自客户端的消息转发到其他客户端。jServer将客户端用户名和密码保存在data.xml中,以支持用户注册功能。

在这里插入图片描述

// In ServerThread read the incoming message and hand it to SocketServer

Message msg = (Message) streamIn.readObject();
server.handle(ID, msg);
.......


// In SocketServer process the messages based on their type

public synchronized void handle(int ID, Message msg){
    
      
	if(msg.type.equals("login")){
    
    
		....
	}
	else id(msg.type.equals("message")){
    
    
		if(msg.recipient.equals("All")){
    
     Announce("message", msg.sender, msg.content); }
		else{
    
    
			// Find the thread of recipient and forward it to him
		}
	}
.......

六、jMessenger

  jMessenger通过指定的ip地址和端口号连接到jServer。然后,到达的消息以及它们的发送者会显示在留言板上。需要说明的是,在传输文件时,文件并不通过服务器,而是客户端之间启用单独线程直接传输,这样可以同时进行聊天和文件传输。jMessenger将消息记录保存在History.xml中,可以查看聊天历史记录。
在这里插入图片描述
在这里插入图片描述

当用户想要发送文件时,首先他的请求是通过type消息发送的upload_req。收件人然后执行以下操作:

  1. 接收方以类型为消息的形式发送其答复 upload_res
  2. 如果请求被接受,那么收件人将打开一个新端口
  3. 为了获得肯定的答复,收件人的IP地址和端口号将被发回。
  4. 发件人在收到肯定答复后将连接到此套接字并开始文件上传
    这种方法的优点是客户端可以同时聊天和传输文件。与消息不同,文件不会通过jServer。
// On recipient side, start a new thread for download

Download dwn = new Download(....);
Thread t = new Thread(dwn);
t.start();
send(new Message("upload_res", ui.username, dwn.port, msg.sender));
// Reply to sender with IP address and port number
.........

// On sender side, start a new thread for file upload

// Connect to the port specified in reply
Upload upl = new Upload(addr, port, ui.file, ui);
Thread t = new Thread(upl);
t.start();

七、使用代码

代码下载:点击此处

注意:一定要关防火墙

在这里插入图片描述

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

7.1 导入项目后报错情况

用IDEA导入项目后java项目不能运行,像这样

在这里插入图片描述

7.2 解决办法

查看sdk是否设置: File > Project Structure > Project
在里插入图片描述
IDEA不能自动对源代码识别出来src目录,需要我们进行手动设置:
src目录=》右键 > make Directory as > Source Root
在这里插入图片描述

于是我又报了一个错:

Cannot start compilation: the output path is not specified for module "ruanjianjiagou".
Specify the output path in the Project Structure dialog.

在这里插入图片描述
点击OK
在Modules设置里勾选”Inherit project compile path”
在这里插入图片描述
设置Project中的”Project compiler output
在这里插入图片描述
我在运行时又出现这样的报错

lnformation: java:Errors occurred while compiling module 'ruanjianjiagou'
lnformation: javac 1.8.0_191 was used to compile java sources
Information: 2021/4/6 8:54 - Build completed with 1 error and 0 warnings in 5 s 190 msError: java:无效的源发行版: 13

如图:
在这里插入图片描述
解决方式:选择最上面一个,这里可以参考你自己当前已经可以运行的项目,选一样的就好了。
在这里插入图片描述
最后再重启下项目

参考:

  1. https://zhidao.baidu.com/question/569834641.html
  2. https://baike.baidu.com/item/C/S%E5%88%86%E5%B8%83%E5%BC%8F%E6%A8%A1%E5%BC%8F/15231117
  3. https://www.codeproject.com/Articles/524120/A-Java-Chat-Application
  4. https://blog.csdn.net/weixin_41431935/article/details/112846365

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

猜你喜欢

转载自blog.csdn.net/hanhanwanghaha/article/details/115444646