ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:47.19KB ,
资源ID:5921821      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5921821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于CS简单聊天程序课程设计资料.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于CS简单聊天程序课程设计资料.docx

1、基于CS简单聊天程序课程设计资料计算机网络课程设计任务书 学 院计算机与信息工程学院专 业网络工程课程名称计算机网络题 目基于C/S模式的简单聊天程序完成期限自2016年6月13日至2016年6月26日共两周内容及任务一、项目的目的利用socket。实现客户与服务器间的信息互通。二、项目任务的主要内容和要求(1)用户聊天室具有群发,私聊,输入昵称与端口号等基本设置。点击“连接”按钮实现与服务器的连接。点击“断开”按钮实现与服务器的断开连接。(2)服务器聊天室具有启动服务器,停止服务器,显示当前在线的用户功能。点击“启动”按钮实现与服务器的连接。点击“停止”按钮实现与服务器的断开连接。(3)设计

2、一个登录程序。验证通过后才能进入聊天室。(4)当服务器与客户机连接成功后。能够互相接受和发送消息。当多个客户机启动时,服务器会创建子线程处理对应线程的消息。三、项目设计(研究)思路(1)设计步骤:先画出聊天室的模型,布局。(2)设计要点:设计主类与子类,分别实现不同的功能(3)主要技术分析:需要掌握socket通信,swing和awt,io的简单应用.(4)解决思路:先按照草稿图设计出聊天室布局。再写各个类的功能。简单测试与修改代码。最后完善。四、具体成果形式和要求(见第一部分)进度安排起止日期工作内容6.13-6.18设计聊天室的模型,布局6.19-6.20编写代码,初步实现聊天程序6.21

3、-6.26完善代码,优化界面,完成任务主要参考资料1赵生慧.Java面向对象程序设计(第二版)M.北京:中国水利水电出版社,2013.2万常选.数据库系统原理与设计(第二版)M.北京:清华大学出版社,2012.3谢钧,谢希仁.计算机网络教程(第四版)M.北京:人民邮电出版社,2014.4李刚.疯狂JAVA讲义M.(第三版).北京:电子工业出版社,2014. 5耿祥义、张跃平.Java2实用教程M.(第三版).北京:清华大学出版社, 2006. 6刘海杰.Java编程设计M.北京:中国铁道出版社,2006.指导教师意见(签字): 年 月 日系(教研室)主任意见(签字): 年 月 日基于C/S模式

4、的简单聊天程序设计说明书 学院名称: 计算机与信息工程学院 班级名称: 网络工程142 学生姓名: 张 三 学 号: 2014211540 题 目: 基于C/S模式的简单聊天程序 指导教师 姓 名: 陈 海 宝 起止日期: 2016.6.13-2016.6.26 目录一、选题背景 1二、方案论证 1三、过程论述 23.1 服务器端 23.2 客户机端 8四、结果分析 15五、结论 17第一部分:正文部分一、选题背景使用Socket实现网上聊天功能。用户可以通过客户端连接到服务器端并进行网上聊天。聊天时可以启动多个客户端。服务器端启动后,接收客户端发来的用户名和密码验证信息。验证通过则以当前的聊

5、天客户列表信息进行响应;此后接收客户端发来的聊天信息,转发给客户端指定的聊天客户(即私聊)或所有其他客户端;在客户断开连接后公告其退出聊天系统的信息。客户端启动后在GUI界面接收用户输入的服务器端信息、账号和密码等验证客户的身份。验证通过则显示当前系统在线客户列表。客户可以与指定对象进行私聊,也可以向系统中所有在线客户发送信息。二、方案论证基于C/S的简单聊天室可以实现用户与服务器间,服务器与多个用户间的通信。聊天室程序通常需要完成以下一些基本功能:(1)登录聊天室;(2)启动服务器;(3)关闭服务器;(4)用户之间的聊天;(5)退出聊天室。本系统其体功能需求如下:(1)聊天室管理员经登录界面

6、登录到管理界面,即系统的服务器端。用户经登录界面进入聊天大厅。 (2)不论是管理员还是用户都需要在登录界面输入正确的用户名和密码后才可以登录到各自的界面中去。 (3)系统的两个主要界面都是为方便管理员和用户操作的。首先,管理员进入到管理界面后可以方便的启动/停止服务器,看到在线用户的信息和聊天信息。用户进入到聊天大厅中可以聊天,查看服务器状态。 (4) 一个用户退出聊天室对其他用户不能产生影响,而服务器断开与客户端的连接则所有的用户都失去与服务器的连接。(5)用户的聊天信息录入,重写,发送,接收方便,快捷。(6)服务器状态,聊天信息和在线用户人数及时刷新。(7)聊天室系统运行稳定、安全性高、三

7、、过程论述3.1 服务器端(1)首先实现的是服务器开始工作界面,如图3-1所示:图3-1 代码如下:public ChatServer() try System.out.println(服务器开始工作.); server=new ServerSocket(port);/初始化服务器套接字 while (true) socket=server.accept();/等待连接 System.out.println(socket.getInetAddress()+连接n);/得到客户机地址 Client client=new Client(socket);/实例化一个客户线程(其中线程Client中S

8、ocket,这里的Socket只是起个过渡作用) clients.add(client);/增加客户线程到向量中 client.start();/启动线程 notifyChatRoom();/监视聊天室连接变化 catch(Exception ex) ex.printStackTrace(); (2)监视聊天室连接情况,并显示出来,如图3-2所示:图3-2代码如下:public static void notifyChatRoom() StringBuffer newUser=new StringBuffer(newUser); for(int i =0;iclients.size();i+)

9、 Client c=(Client)clients.elementAt(i); newUser.append(:+c.name); sendClients(newUser); public static void sendClients(StringBuffer message) for(int i =0;i0) Client client=(Client)clients.firstElement(); try client.socket.close(); catch(IOException e) e.printStackTrace(); clients.removeElement(clien

10、t); /移出客户端 public static void disconnect(Client c) / 断开客户端 try System.err.println(c.ip+断开连接n); catch (Exception ex) ex.printStackTrace(); clients.removeElement(c); c.socket = null; (3)再次是实现服务器与客户机连接机制,如果有客户机申请连接,则为此 客户机创建线程,代码如下:public ChatServer() try System.out.println(服务器开始工作.); server=new Server

11、Socket(port);/初始化服务器套接字 while (true) socket=server.accept();/等待连接 System.out.println(socket.getInetAddress()+连接n);/得到客户机地址 Client client=new Client(socket);/实例化一个客户线程(其中线程Client中Socket,这里的Socket只是起个过渡作用) clients.add(client);/增加客户线程到向量中 client.start();/启动线程 notifyChatRoom();/监视聊天室连接变化 catch(Exception

12、 ex) ex.printStackTrace(); public ChatServer() try System.out.println(服务器开始工作.); server=new ServerSocket(port);/初始化服务器套接字 while (true) socket=server.accept();/等待连接 System.out.println(socket.getInetAddress()+连接n);/得到客户机地址 Client client=new Client(socket);/实例化一个客户线程(其中线程Client中Socket,这里的Socket只是起个过渡作用

13、) clients.add(client);/增加客户线程到向量中 client.start();/启动线程 notifyChatRoom();/监视聊天室连接变化 catch(Exception ex) ex.printStackTrace(); (4)再次是实现服务器的消息发送和接受的处理机制,如图3-3所示:图3-3代码如下:public Client(Socket s) socket = s; try reader = new BufferedReader(new InputStreamReader(s.getInputStream();/得到输入流 ps = new PrintStr

14、eam(s.getOutputStream();/到输出流 String info = reader.readLine();/读取接收到的信息 StringTokenizer stinfo = new StringTokenizer(info,:); /分解字符串 String head = stinfo.nextToken(); /获取关键字 System.out.println(stinfo.toString(); System.out.println(head); if (stinfo.hasMoreTokens() name = stinfo.nextToken(); /获取用户名 i

15、f (stinfo.hasMoreTokens() ip = stinfo.nextToken(); /获取IP地址 catch (IOException ex) ex.printStackTrace(); System.out.println(name); System.out.println(ip); public void send (StringBuffer msg) ps.println(msg); /输出信息 ps.flush(); public void run() while (true) String line = null; try line = reader.readLi

16、ne(); System.out.println(line:+line); catch (IOException ex) ex.printStackTrace(); /输出错误信息 ChatServer.disconnect(this);/断开连接 ChatServer.notifyChatRoom();/更新信息 if (line = null) /客户离开 ChatServer.disconnect(this); ChatServer.notifyChatRoom(); StringTokenizer st = new StringTokenizer(line,:);/分解字符串 Stri

17、ng keyword = st.nextToken(); if (keyword.equals(MSG) /发送来的聊天信息 StringBuffer msg = new StringBuffer(MSG:); msg.append(name); /在信息上增加用户名 msg.append(st.nextToken(0n); ChatServer.sendClients(msg);/发送聊天语句到各个客户端 System.out.println(msg); else if (keyword.equals(quit) /退出命令 ChatServer.disconnect(this); /断开连

18、接 ChatServer.notifyChatRoom(); /刷新信息 3.2 客户机端(1)客户机登录界面如图3-4所示:图3-4代码如下:public class ChatClient extends JFrame implements ActionListener TextField tfName = new TextField();/姓名输入文本域 Button btConnect = new Button(登陆);/连接按钮 Button btDisconnect = new Button(退出);/断开连接按钮 TextArea tfChat = new TextArea();/

19、显示聊天信息文本域 Button btSend = new Button(发送); TextField tfMessage = new TextField();/聊天输入 java.awt.List list1 = new java.awt.List(9);/显示在线用户信息 Socket socket = null;/连接端口 PrintStream ps = null;/输出流 Listen listen = null; /监听线程类 class Listen extends Thread BufferedReader reader; PrintStream ps; String cnam

20、e; Socket socket; ChatClient chatClient; public Listen(ChatClient client,String name,Socket socket) try this.chatClient = client; this.socket = socket; ame = name; reader = new BufferedReader(new InputStreamReader(socket.getInputStream(); ps = new PrintStream(socket.getOutputStream(); catch (IOExcep

21、tion e) e.printStackTrace(); public void run() while (true) String line=null; try line = reader.readLine(); /读取数据流 System.out.println(客户端:+line); catch (IOException ex) ex.printStackTrace(); ps.println(quit); /断开连接 return; StringTokenizer stinfo = new StringTokenizer(line,:); /分解字符串 String keyword =

22、 stinfo.nextToken(); if (keyword.equals(MSG) chatClient.tfChat.append(line+n); else if (keyword.equals(newUser) chatClient.list1.clear(); chatClient.list1.add(users, 0); int i = 1; while (stinfo.hasMoreTokens() chatClient.list1.add(stinfo.nextToken(), i+); public ChatClient(Socket socket) this.setLa

23、yout(new BorderLayout(); JPanel panel1 = new JPanel(); Label label = new Label(账号); panel1.setBackground(Color.pink); panel1.add(label); panel1.add(tfName); panel1.add(btConnect); panel1.add(btDisconnect); this.add(panel1,BorderLayout.SOUTH); JPanel panel2 = new JPanel(); tfChat.setBackground(Color.

24、yellow); panel2.add(tfChat); panel2.add(list1); this.add(panel2,BorderLayout.CENTER); JPanel panel3 = new JPanel(); Label label2 = new Label(聊天板); panel3.add(label2); panel3.add(tfMessage); panel3.add(btSend); this.add(panel3,BorderLayout.NORTH); this.setBounds(50,50,400,350); this.setVisible(true);

25、 btConnect.addActionListener(this); btDisconnect.addActionListener(this); btSend.addActionListener(this); (2)其次是实现消息的接受和发送处理机制,代码如下: public void run() while (true) String line=null; try line = reader.readLine(); /读取数据流 System.out.println(客户端:+line); catch (IOException ex) ex.printStackTrace(); ps.pr

26、intln(quit); /断开连接 return; StringTokenizer stinfo = new StringTokenizer(line,:); /分解字符串 String keyword = stinfo.nextToken(); if (keyword.equals(MSG) chatClient.tfChat.append(line+n); else if (keyword.equals(newUser) chatClient.list1.clear(); chatClient.list1.add(users, 0); int i = 1; while (stinfo.h

27、asMoreTokens() chatClient.list1.add(stinfo.nextToken(), i+); (3)再次是实现客户端登陆界面以及功能的实现,如图3-5所示:图3-5代码如下: public class ChatClient extends JFrame implements ActionListener TextField tfName = new TextField();/姓名输入文本域 Button btConnect = new Button(登陆);/连接按钮 Button btDisconnect = new Button(退出);/断开连接按钮 TextArea tfChat = new TextArea();/显示聊天信息文本域 Button btSend = new Button(发送); TextField tfMessage = new TextField();/聊天输入 java.awt.List list1 = new java.awt.List(9);/显示在线用户信息 Socket socket = null;/连接端口 PrintStream ps = null;/输出流 Listen listen = null; /监听线程类 class Listen exte

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1