CS型简单聊天室程序简介_第1页
CS型简单聊天室程序简介_第2页
CS型简单聊天室程序简介_第3页
CS型简单聊天室程序简介_第4页
CS型简单聊天室程序简介_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/7/9,1,C/S型简单聊天室程序简介,2020/7/9,2,展示内容,2020/7/9,3,1. 需求分析 Requirement,功能性需求分析 (Functional Requirements): 1.There should be a server and at least one client; 2.Clients could send message and every client could receive the message; 3.Server allows multiusers to chat online at the same time; 4.The co

2、mmunication is in real time between the multiple clients if any. 非功能性需求分析 (Non-functional Requirements): 1.Use java sockets to complete the program; 2.The communication should be using TCP.,2020/7/9,4,Client B,2. 程序设计 Design,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Se

3、rver接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,2. 程序设计 Design,来呀,我要连到聊天服务器,嗯,进来了,Client A,Client B,Server 来宾A,Server 来宾A, 来宾B,Client A,Server 收到信息,打铃了,上课了, 大家快来啊,Client A,

4、Server 信息分发给所有来宾,Client B,打铃了,上课了, 大家快来啊,1. 客户端连接到服务器; 2. 服务器建立连接并把客户端驾到来宾清单中; 3. 另一个用户连接上来; 4. 用户A送出信息到聊天服务器上; 5. 服务器将信息送给所有来宾。,Server,我要连上你了,Client A,Server 等待用户请求,形象的描述 O(_)O,2. 程序设计 Design,Public class VerySimpleChatServer public static void main (String args) new VerySimpleChatServer().go(); pu

5、blic void go() try while (true) Thread t = new Thread (new ClientHandler (clientSocket); t.start(); public class ClientHandler implements Runnable public ClientHandler (Socket clientSocket) public void run() try tellEveryone (message); public void tellEveryone (String message) ,2-1 Server端代码框架,2. 程序

6、设计 Design,Public class SimpleChatClient public static void main (String args) client.go(); public void go() sendButton.addActionListener (new SendButtonListener (); setUpNetworking(); Thread readerThread = new Threas (new IncomingReader (); readerThread.start(); public class SendButtonListener imple

7、ments ActionListener public void setUpNetworking() public class IncomingReader implements Runnable ,2-2 Client端代码框架,2020/7/9,8,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server

8、将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,2020/7/9,9,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Clien

9、t发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,Public void go() ServerSocket serverSock = new ServerSocket (5000); /设定服务器端口 5000为与Chat Room的Client建立连接用的Well-known Port(熟知端口) ,2020/7/9,10,3. 程序实现 Implementation,Client B,Client A,Server,Server启动

10、,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,2020/7/9,11,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Soc

11、ket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,Private void setUpNetworking() sock = new Socket (“127.0.0.1”, 5000); / Client

12、请求与Server建立连接 ,2020/7/9,12,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Cl

13、ose,Close,2020/7/9,13,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,C

14、lose,Public void go() Socket clientSocket = serverSock.accept(); / Server同意Client建立连接的请求 ,2020/7/9,14,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Cl

15、ient,Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,2020/7/9,15,3. 程序实现 Implementation,Client B,Client A,Server,Server启动,建Socket,Client请求与Server建立连接,Client请求与Server建立连接,Server接受Client请求,Server接受Client请求,Client向Server发送给所有Client的消息,Server将Client发送的信息转发给所有已建立连接的Client,

16、Server将Client发送的信息转发给所有已建立连接的Client,Client提出Close请求,Client提出Close请求,Close,Close,要点: 数据的输入输出的实现; 多线程的实现。,3. 程序实现 Implementation,3-1 以Client为例的数据的输出的实现,1. 对服务器建立Socket链接: Socket chatSocket = new Socket (“127.0.0.1”, 5000); 2. 建立链接到Socket的PrintWriter: PrintWriter writer = new PrintWriter(chatSocket.get

17、OutputStream(); /将Writer中的字符串转换成0,1的串流的形式,传给Socket的outputStream中 3. 写入数据: writer.println(“message to send”);,“message”,010111001,Server 接收信息目的地,链接,写上服务器的字节 Socket输出,字符 PrintWriter,Client 发送信息的来源,聊天服务器程序,3. 程序实现 Implementation,3-2 以Client为例的数据的输入的实现,1. 建立对服务器的Socket链接: Socket chatSocket = new Socket

18、(“127.0.0.1”, 5000); 2. 建立链接到Socket上底层输入串流的InputStreamReader: InputStreamReader stream = new InputStreamReader (chatSocket.getInputStream(); /从Socket中取得输入串流0,1,经过reader转换成可是别的字符串形式 3. 建立BufferedReader来读取: BufferedReader reader = new BufferedReader (stream); String message = reader.readLine();,Buffer

19、ed Characters,Characters,011001001,Server 发送信息的来源,来自服务器的字节 Socket输入流,Data on the Server,链接,链接,转换成字符 InputStreamReader,缓冲区的字符 BufferedReader,Client 接收信息目的地,3. 程序实现 Implementation,3-3 Server端多线程的实现,Public void go() Thread t = new Thread (new ClientHandler (clientSocket); t.start(); Public class ClientHandler implements Runnable public ClientHandler (Socket clientSocket) try sock = clientSocket; ImputStreamReader isReader = new InputStreamReader (sock.getInputStream); reader = new BufferedReader (isReader); catch (Exception ex) public void run () try while (message = rea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论