!
1. C/S概念 1.1 什么是C/S
C/S分布式模式是一个计算机术语。 C表示,S表示,C/S模式表示客户端/服务器模式。 它是计算机软件协同工作的一种模式,通常采用两层结构。 服务器端负责数据管理,客户端负责完成与用户的交互任务。
1.2 C/S和B/S的区别
C/S模式是一个两层结构的系统,第一层是在客户端安装客户端应用程序,第二层是在服务器上安装应用服务器。 C/S模式的工作过程中,客户端程序请求,服务器程序接收并处理客户端程序请求,并返回结果。
B/S模型,即浏览器/服务器模型,是在传统二层C/S模型基础上发展起来的一种新型网络结构模型,其本质是三层C/S模型。
在用户计算机上安装浏览器软件,在服务器上存储数据,安装WWW服务器、文件服务器等业务应用程序。 用户通过浏览器访问服务器,进行信息浏览、文件传输和电子邮件服务。
两者的区别如下:
1. 参考不同
C/S:指客户端/服务器模式。 它是计算机软件协同工作的一种模式,采用两层结构。 服务器端负责数据管理,客户端负责完成与用户的交互任务。
B/S:是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最重要的应用软件。
二、原理不同
C/S:客户端运行应用程序,服务器运行服务程序。 应用程序向服务程序发送申请。
B/S:统一客户端,将系统功能实现的核心部分集中到服务器,简化系统的开发、维护和使用。 只需要在客户端电脑上安装一个浏览器,比如或者,服务器端就会安装,,,,MYSQL等数据库。 浏览器通过Web服务器与数据库进行交互。
3、优势不同
C/S:可以充分发挥客户端PC的处理能力,很多工作经过客户端处理后可以提交给服务器。 相应的优点就是客户响应速度快。
B/S:总体拥有成本低、维护方便、分发性强、开发简单。 它可以在任何地方操作,无需安装任何特殊软件。
2. 主页面
视频演示:
代码下载:
百度网盘链接:
提取码:8888
或源地址:
3. 简介
在本文中,将演示一个可以同时处理多个用户的聊天应用程序。 它还支持文件传输。
它完全基于Java,由两部分组成:(客户端应用程序)和(服务器应用程序)。
4.功能特点同时处理多个用户支持公共和私人消息用户注册和登录可支持文件传输5.
有两个主要的类分别处理连接和消息:
它在启动时运行在一个单独的线程中,它会监视是否有客户端连接到服务器。 一旦找到客户端,它就会创建一个单独的线程来运行。
创建完成后,会继续监听客户端发来的消息,并将消息交给处理。 同样,它支持将消息从客户端转发到其他客户端。 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
}
}
.......
六,
通过指定的 IP 地址和端口号连接。 然后,传入的消息和发送者会显示在留言板上。 需要说明的是,传输文件时,文件不经过服务器,而是在客户端之间启用单独的线程直接传输,这样就可以同时进行聊天和文件传输。 将消息记录保存为.xml,可以查看聊天记录。
当用户想要发送文件时,首先将通过类型消息发送他的请求。 然后接收者执行以下操作:
接收方以类型消息的形式发送回复。如果请求被接受,则接收方打开一个新端口。 对于肯定回复,接收者的 IP 地址和端口号将被发回。发送者收到肯定回复后将连接到此套接字并开始文件上传
这种方式的优点是客户端可以同时聊天和传输文件。 与消息不同,文件不会被传递。
// 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();
七、使用代码
代码下载:
注意:一定要关闭防火墙