![点击分享此内容可以赚币 分享](/master/images/share_but.png)
实现一个一对多的聊天程序.doc
《实现一个一对多的聊天程序.doc》由会员分享,可在线阅读,更多相关《实现一个一对多的聊天程序.doc(18页珍藏版)》请在咨信网上搜索。
1、实现一个一对多的聊天程序 作者: 日期:18 个人收集整理 勿做商业用途、实现一个一对多的聊天程序一、实验题目实现一个一对多的聊天程序。其基本过程如下:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以分别部署在两台电脑上。二、原理概述TCP是一种可靠的、基于连接的网络传输协议,当两个网络进程准备进行通信时,都必须首先建立各自的一个套接口,其中服务器建立套接口后,侦听来自网络的客户连接请求,客户通过套接口,指定服务器的IP 地址和端口号,便可与服
2、务器通信。聊天程序采用的是C/S通信模式,即客户/服务模式,它把一个应用划分成功能不同的两个部分,分别在不同的计算机上运行,其中一个为服务端程序,用来响应和提供固定的服务,一个为客户端程序,用来向服务端提出请求和要求某种服务。在数量关系上,通常有一对多的(即一个服务端程序和一个客户端程序之间通信)。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。(2)等待客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。(4)返回第二步,等待另一客户请求(5)关闭服
3、务器。客户方:(1)打开一通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发送服务请求报文,等待并接收应答;继续提出请求(3)请求结束后关闭通信通道并终止. 图1基于连接的服务者、客户服务流程图三、设计方案服务程序运行在服务器主机的某个端口上,一旦启动服务,它将在这个端口上倾听,等待客户程序发来的请求。服务器的套接口用服务器套接口类(ServerSocket)来建立。1、根据程序设计题目时首先明确程序的目的以及任务2、利用JAVA语言编写程序,使用套接字来完成测试功能。3、程序在Eclipcse环境中编译,根据错误提示查找分析并修改原程序四、程序编写:import java.io。B
4、ufferedReader;import java。io。BufferedWriter;import java.io.IOException;import java.io。InputStreamReader;import java.io.OutputStreamWriter;import .ServerSocket;import .Socket;import java。text。SimpleDateFormat;import java.util。ArrayList;import java。util。List;/* Title 服务器 author Allen version 20105-3 下
5、午08:28:36*/public class Server ServerSocket server = null;ListSC clients = new ArrayList();SimpleDateFormat sdf = new SimpleDateFormat(”MM-dd HH:mm:ss”);public void begin()/读取客户端的userNameBufferedReader bufUserName = null;boolean started = false;String userName = null;try server = new ServerSocket(88
6、88);System.out.println(”服务器启动成功! 端口” + server.getLocalPort() + ”监听中.。”);started = true;while(started)Socket socket = server.accept();bufUserName = new BufferedReader(new InputStreamReader(socket.getInputStream());userName = bufUserName。readLine();System。out。println(”用户:” + userName + IP: + socket。ge
7、tLocalSocketAddress() + client connect.。.);/bufUserName。close();SC sc = new SC(socket);new Thread(sc).start();clients。add(sc); catch (IOException e) System。out。println(”端口启动失败.。.” + e.getMessage() + n 程序安全退出.。”);System。exit(0);public static void main(String args) new Server()。begin();private class S
8、C implements RunnableBufferedReader br = null;BufferedWriter bw = null;Socket socket = null;boolean isConnect = false;public SC(Socket socket)this。socket = socket;try br = new BufferedReader(new InputStreamReader(socket。getInputStream());bw = new BufferedWriter(new OutputStreamWriter(socket。getOutpu
9、tStream();isConnect = true; catch (IOException e) e。printStackTrace();public void sendMessage(String str)try /bw。write(str + sdf。format(new Date() + ”n);bw。write(str);bw.newLine();bw.flush(); catch (IOException e) e.printStackTrace();public void run() tryString strRead = null;while(isConnect)while(s
10、trRead = br。readLine()) != null)System。out。println(”Server readLine。.” + strRead);for(int i = 0; i clients.size(); i+)clients.get(i).sendMessage(strRead);catch(Exception e)try br.close();socket.close(); catch (IOException e1) e1.printStackTrace();e.getStackTrace();finallytry if(br != null) br。close(
11、);if(bw != null) bw.close();if(socket != null) socket.close();/s = null; catch (IOException e1) e1.printStackTrace();import java。awt。*;import java。awt.event.*;import java.io.*;import .Socket;import .UnknownHostException;import java.text。SimpleDateFormat;import java。util。Date;import javax。swing。;/* T
12、itle 客户端* author Allen version 2010-5-3 下午08:28:47*/public class Client extends JFrame Socket socket = null;JTextField jname = null;JTextField text = new JTextField();JTextArea area = new JTextArea(10, 40);BufferedReader br = null;BufferedWriter bw = null;BufferedWriter name_buf = null;boolean conne
13、cted = false;SimpleDateFormat sdf = new SimpleDateFormat(MMdd HH:mm:ss);static String userName = null;public Client()initFrame();public static void main(String args) new Client();public String getUserName()return userName;public void initFrame()/setTitle(userName);setSize(400, 300);setLocation(500,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 一个 一对 聊天 程序
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。