小言_互联网的博客

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

526人阅读  评论(0)

一、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宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)


转载:https://blog.csdn.net/hanhanwanghaha/article/details/115444646
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场