CS型简单聊天室程序简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C/S型简单聊天室程序简介2020/2/121展示内容程序设计Design2程序截图Screenshots4需求分析Requirement31程序实现Implementation332020/2/1221.需求分析Requirement功能性需求分析(FunctionalRequirements):1.Thereshouldbeaserverandatleastoneclient;2.Clientscouldsendmessageandeveryclientcouldreceivethemessage;3.Serverallowsmultiuserstochatonlineatthesametime;4.Thecommunicationisinrealtimebetweenthemultipleclientsifany.非功能性需求分析(Non-functionalRequirements):1.Usejavasocketstocompletetheprogram;2.ThecommunicationshouldbeusingTCP.2020/2/123ClientB2.程序设计Design2020/2/124ClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose2.程序设计Design来呀我要连到聊天服务器嗯,进来了ClientAClientBServer–来宾AServer–来宾A,来宾BClientAServer–收到信息打铃了,上课了,大家快来啊…ClientAServer–信息分发给所有来宾ClientB打铃了,上课了,大家快来啊…•1.客户端连接到服务器;•2.服务器建立连接并把客户端驾到来宾清单中;•3.另一个用户连接上来;•4.用户A送出信息到聊天服务器上;•5.服务器将信息送给所有来宾。Server,我要连上你了ClientAServer–等待用户请求形象的描述O(∩_∩)O2.程序设计DesignPublicclassVerySimpleChatServer{…publicstaticvoidmain(String[]args){newVerySimpleChatServer().go();}publicvoidgo(){…try{while(true){Threadt=newThread(newClientHandler(clientSocket));t.start();}}}publicclassClientHandlerimplementsRunnable{…publicClientHandler(SocketclientSocket){…}publicvoidrun(){…try{…tellEveryone(message);…}}}publicvoidtellEveryone(Stringmessage){…}}2-1Server端代码框架2.程序设计DesignPublicclassSimpleChatClient{…publicstaticvoidmain(String[]args){client.go();}publicvoidgo(){…sendButton.addActionListener(newSendButtonListener());setUpNetworking();ThreadreaderThread=newThreas(newIncomingReader());readerThread.start();}publicclassSendButtonListenerimplementsActionListener{…}publicvoidsetUpNetworking(){…}publicclassIncomingReaderimplementsRunnable{…}}2-2Client端代码框架3.程序实现Implementation2020/2/128ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose3.程序实现Implementation2020/2/129ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClosePublicvoidgo(){…ServerSocketserverSock=newServerSocket(5000);//设定服务器端口5000为与ChatRoom的Client建立连接用的Well-knownPort(熟知端口)…}3.程序实现Implementation2020/2/1210ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose3.程序实现Implementation2020/2/1211ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClosePrivatevoidsetUpNetworking(){…sock=newSocket(“127.0.0.1”,5000);//Client请求与Server建立连接…}3.程序实现Implementation2020/2/1212ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose3.程序实现Implementation2020/2/1213ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClosePublicvoidgo(){…SocketclientSocket=serverSock.accept();//Server同意Client建立连接的请求…}3.程序实现Implementation2020/2/1214ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose3.程序实现Implementation2020/2/1215ClientBClientAServerServer启动,建SocketClient请求与Server建立连接Client请求与Server建立连接Server接受Client请求Server接受Client请求Client向Server发送给所有Client的消息Server将Client发送的信息转发给所有已建立连接的ClientServer将Client发送的信息转发给所有已建立连接的ClientClient提出Close请求Client提出Close请求CloseClose要点:•数据的输入输出的实现;•多线程的实现。3.程序实现Implementation3-1以Client为例的数据的输出的实现•1.对服务器建立Socket链接:SocketchatSocket=newSocket(“127.0.0.1”,5000);•2.建立链接到Socket的PrintWriter:PrintWriterwriter=newPrintWriter(chatSocket.getOutputStream());//将Writer中的字符串转换成0,1的串流的形式,传给Socket的outputStream中•3.写入数据:writer.println(“messagetosend”);“message”010111001Server–接收信息目的地链接写上服务器的字节Socket输出字符PrintWriterClient–发送信息的来源聊天服务器程序3.程序实现Implementation3-2以Client为例的数据的输入的实现•1.建立对服务器的Socket链接:SocketchatSocket=newSocket(“127.0.0.1”,5000);•2.建立链接到Socket上底层输入串流的InputStreamReader:InputStreamReaderstream=newInputStreamReader(chatSocket.getInputStream());//从Socket中取得输入串流0,1,经过reader转换成可是别的字符串形式•3.建立BufferedReader来读取:BufferedReaderreader=newBufferedRe

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功