您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 基于CS简单聊天程序课程设计
计算机网络课程设计任务书学院计算机与信息工程学院专业网络工程课程名称计算机网络题目基于C/S模式的简单聊天程序完成期限自2016年6月13日至2016年6月26日共两周内容及任务一、项目的目的利用socket。实现客户与服务器间的信息互通。二、项目任务的主要内容和要求(1)用户聊天室具有群发,私聊,输入昵称与端口号等基本设置。点击“连接”按钮实现与服务器的连接。点击“断开”按钮实现与服务器的断开连接。(2)服务器聊天室具有启动服务器,停止服务器,显示当前在线的用户功能。点击“启动”按钮实现与服务器的连接。点击“停止”按钮实现与服务器的断开连接。(3)设计一个登录程序。验证通过后才能进入聊天室。(4)当服务器与客户机连接成功后。能够互相接受和发送消息。当多个客户机启动时,服务器会创建子线程处理对应线程的消息。三、项目设计(研究)思路(1)设计步骤:先画出聊天室的模型,布局。(2)设计要点:设计主类与子类,分别实现不同的功能(3)主要技术分析:需要掌握socket通信,swing和awt,io的简单应用.(4)解决思路:先按照草稿图设计出聊天室布局。再写各个类的功能。简单测试与修改代码。最后完善。四、具体成果形式和要求(见第一部分)进度起止日期工作内容6.13-6.18设计聊天室的模型,布局安排6.19-6.20编写代码,初步实现聊天程序6.21-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模式的简单聊天程序设计说明书学院名称:计算机与信息工程学院班级名称:网络工程142学生姓名:张三学号:2014211540题目:基于C/S模式的简单聊天程序指导教师姓名:陈海宝起止日期:2016.6.13-2016.6.26目录一、选题背景......................................................................................1二、方案论证......................................................................................1三、过程论述......................................................................................23.1服务器端......................................................................................23.2客户机端......................................................................................8四、结果分析....................................................................................15五、结论...........................................................................................171第一部分:正文部分一、选题背景使用Socket实现网上聊天功能。用户可以通过客户端连接到服务器端并进行网上聊天。聊天时可以启动多个客户端。服务器端启动后,接收客户端发来的用户名和密码验证信息。验证通过则以当前的聊天客户列表信息进行响应;此后接收客户端发来的聊天信息,转发给客户端指定的聊天客户(即私聊)或所有其他客户端;在客户断开连接后公告其退出聊天系统的信息。客户端启动后在GUI界面接收用户输入的服务器端信息、账号和密码等验证客户的身份。验证通过则显示当前系统在线客户列表。客户可以与指定对象进行私聊,也可以向系统中所有在线客户发送信息。二、方案论证基于C/S的简单聊天室可以实现用户与服务器间,服务器与多个用户间的通信。聊天室程序通常需要完成以下一些基本功能:(1)登录聊天室;(2)启动服务器;(3)关闭服务器;(4)用户之间的聊天;(5)退出聊天室。本系统其体功能需求如下:(1)聊天室管理员经登录界面登录到管理界面,即系统的服务器端。用户经登录界面进入聊天大厅。(2)不论是管理员还是用户都需要在登录界面输入正确的用户名和密码后才可以登录到各自的界面中去。(3)系统的两个主要界面都是为方便管理员和用户操作的。首先,管理员进入到管理界面后可以方便的启动/停止服务器,看到在线用户的信息和聊天信息。用户进入到聊天大厅中可以聊天,查看服务器状态。2(4)一个用户退出聊天室对其他用户不能产生影响,而服务器断开与客户端的连接则所有的用户都失去与服务器的连接。(5)用户的聊天信息录入,重写,发送,接收方便,快捷。(6)服务器状态,聊天信息和在线用户人数及时刷新。(7)聊天室系统运行稳定、安全性高、三、过程论述3.1服务器端(1)首先实现的是服务器开始工作界面,如图3-1所示:图3-1代码如下:publicChatServer(){try{System.out.println(服务器开始工作......);server=newServerSocket(port);//初始化服务器套接字while(true){socket=server.accept();//等待连接System.out.println(socket.getInetAddress()+连接\n);//得到客户机地址Clientclient=newClient(socket);//实例化一个客户线程(其中线程Client中Socket,这里的Socket只是起个过渡作用)clients.add(client);//增加客户线程到向量中3client.start();//启动线程notifyChatRoom();//监视聊天室连接变化}}catch(Exceptionex){ex.printStackTrace();}}(2)监视聊天室连接情况,并显示出来,如图3-2所示:图3-2代码如下:publicstaticvoidnotifyChatRoom(){StringBuffernewUser=newStringBuffer(newUser);for(inti=0;iclients.size();i++){Clientc=(Client)clients.elementAt(i);newUser.append(:+c.name);}sendClients(newUser);}publicstaticvoidsendClients(StringBuffermessage){for(inti=0;iclients.size();i++){4Clientclient=(Client)clients.elementAt(i);client.send(message);}}publicvoidcloseAll(){while(clients.size()0){Clientclient=(Client)clients.firstElement();try{client.socket.close();}catch(IOExceptione){e.printStackTrace();}clients.removeElement(client);//移出客户端}}publicstaticvoiddisconnect(Clientc){//断开客户端try{System.err.println(c.ip+断开连接\n);}catch(Exceptionex){ex.printStackTrace();}clients.removeElement(c);c.socket=null;}(3)再次是实现服务器与客户机连接机制,如果有客户机申请连接,则为此客户机创建线程,代码如下:publicChatServer(){try{System.out.println(服务器开始工作......);server=newServerSocket(port);//初始化服务器套接字5while(true){socket=server.accept();//等待连接System.out.println(socket.getInetAddress()+连接\n);//得到客户机地址Clientclient=newClient(socket);//实例化一个客户线程(其中线程Client中Socket,这里的Socket只是起个过渡作用)clients.add(client);//增加客户线程到向量中client.start();//启动线程notifyChatRoom();//监视聊天室连接变化}}catch(Exceptionex){ex.printStackTrace();}publicChatServer(){try{System.out.println(服务器开始工作......);server=newServerSocket(port);//初始化服务器套接字while(true){socket=server.accept();//等待连接System.out.println(socket.getInetAddress()+连接\n);//得到客户机地址Clientclient=newClient(socket);//实例化一个客户线程(其中线程Client中Socket,这里的Socket只是起个过渡作用)clients.add(client);//增加客户线程到向量中client.start();//启动线程notifyChatRoom();//监视聊天室连接变化}}catch(Exceptionex){ex.printStackTrace();6}(4)再次是实现服务器的消息发送和接受的处理机制,如图3-3所示:图3-3代码如下:publicClient(Sockets){socket=s;try{reader=newBufferedReader(newInputStreamReader(s.getInputStream()));//得到输入流ps=newPrintStream(s.getOutputStream());//到输出流Stringinfo=reader.readLine();//读取接收到的信息StringTokenizerstinfo=newStringTokenizer(info,:);//分解字符串Stringhead=stinfo.nextToken();//获取关键字System.out.println(stinfo.toString());System.out.println(head);if(stinfo.hasMoreTokens()){name=stinfo.nextToken();//获取用户名}7if(stinfo.hasMoreTokens()){ip=stinfo.nextToken();//获取IP地址}}catch(IOExceptionex){ex.printStackTrace();}System.out.println(name);System.out
本文标题:基于CS简单聊天程序课程设计
链接地址:https://www.777doc.com/doc-2568991 .html