C/S分布式模式,是计算机用语。C是指Client,S是指Server,C/S模式就是指客户端/服务器模式。是计算机软件协同工作的一种模式,通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
C/S模式是一种两层结构的系统,第一层是在客户端上安装客户端应用程序,第二层是在服务器上安装应用服务器。在C/S模式的工作过程中,客户端程序请求,服务器程序接收并处理客户端程序请求,并返回结果。
B/S模式,即浏览器/服务器模式,是在传统的两层C/S模式基础上发展起来的一种新的网络结构模式,其本质是三层C/S模式。
在用户的计算机上安装浏览器软件,在服务器上存储数据,安装服务应用程序,如WWW服务器和文件服务器。用户通过浏览器访问服务器,以进行信息浏览、文件传输和电子邮件服务。
两者区别如下:
一、指代不同
C/S:就是指客户端/服务器模式。是计算机软件协同工作的一种模式,采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
B/S:是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。
二、原理不同
C/S:客户端运行应用程序,服务器端运行服务程序。应用程序向服务程序发出一个应用程序。
B/S:统一客户端,将系统功能实现的核心部分集中到服务器,简化系统的开发、维护和使用。只需在客户机上安装一个浏览器,如NetscapeNavigator或InternetExplorer,服务器就会安装SQLServer、Oracle、MYSQL等数据库。浏览器通过Web服务器与数据库交互。
三、优势不同
C/S:可以充分发挥客户端PC的处理能力,很多工作经过客户端处理后可以提交给服务器。相应的优点是客户端响应速度快。
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(服务器应用程序)。
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通过指定的ip地址和端口号连接到jServer。然后,到达的消息以及它们的发送者会显示在留言板上。需要说明的是,在传输文件时,文件并不通过服务器,而是客户端之间启用单独线程直接传输,这样可以同时进行聊天和文件传输。jMessenger将消息记录保存在History.xml中,可以查看聊天历史记录。
当用户想要发送文件时,首先他的请求是通过type消息发送的upload_req。收件人然后执行以下操作:
// 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宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
用IDEA导入项目后java项目不能运行,像这样
查看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
如图:
解决方式:选择最上面一个,这里可以参考你自己当前已经可以运行的项目,选一样的就好了。
最后再重启下项目
参考:
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)