计算机网络课程设计大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
研究生课程《计算机网络》
课程设计论文
题目:利用Java语言的Socket编程实现网络环境下两
台计算机之间的字符聊天功能
学院:信息工程与自动化学院
专业:电子与通信工程
年级:2013级
学号:
姓名:
分数
1设计项目分析
1.1需求分析
1.1.1性能需求
利用Java 语言的Socket编程实现网络环境下两台计算机之间的字符聊天功能。一个QQ系统由一个服务器和若干个客户端组成。服务器和叫客户端之间通过TCP/IP网络协议通信。客户端的为用户服务的。客户端的功能:一是用户通过登入界面启动与服务器的连接,并发送用户的基本信息给服务器;二是客户端界面可以收到好友发送的信息,也能给好友发送信息。服务器为客户端服务的。服务器提供的功能是:一是等待客户端的连接,客户端连接上,保存客户端信息,并发信息告诉其它在线客户XX已经上线;二是起消息的转发作用,所有的客户聊天信息都有服务器来转发。
1.1.2环境需求
运行环境:Windows xp、eclipse
必要环境:JDK 1.5 以上
1.2实现目标
(1)登录界面,好友列表界面,聊天界面。
(2)当用户点击登录后,把QQ号码和密码发送给QqServer去验证,如果该用户合法,则返回ok,反之返回Err。
(3)完成多个好友互相聊天功能。
(4)如果好友在线,则显示彩色头像,反之,显示灰色头像。
(5)当好友上线后,提示。
(6)把接收到的消息,显示到该显示聊天界面。
(7)当一个用户上线是能看到所有的在线好友,用户可以群聊也可以选择某个人单独聊天。
2 系统设计
2.1模型分析
客户端:建立与服务器的连接并登陆,能显示登陆错误信息,完成界面登录。
并在每次用户接收到聊天信息后将会开始分析聊天信息,然后将适合自己的信息人性化地显示在与好友聊天界面上。
服务器:检查登陆信息是否正确,并向客户端返回登陆信息。如信息正确,就将用户发送给该用户。可以将聊天信息,转发给消息指定的客户端。
整体模型如图1所示。
图1整体通信模型
2.2流程分析
(1)服务器端:运行服务器程序
(2)客户端:
①进入登陆界面,输入QQ 号码和密码,点登录按扭。
②进入好友列表。
③双击要聊天的好友,进入聊天界面。
2.3设计分析
MyServerFrame.java 功能:服务器端的控制界面,可以完成启动服务器,关闭服务器可以管理和监控用户。
SerConClientThread.java 功能:是服务器和某个客户端的通信线程。
MyQqServer.java 功能:qq 服务器,它在监听,等待某个qq 客户端,来连接。 QqFriendList.java 功能:我的好友列表(也包括陌生人,黑名单)。
QqClientLogin.java 功能:qq 客户端登录界面。
QqChat.java 功能:与好友聊天的界面
ClientConServerThread.java 功能:客户端和服务器端保持通讯的线程. QqClientConServer.java 功能:客户端连接服务器的后台
2.4结果分析
1、运行MyServerFrame.java 启动服务器,如图2所示。
信息 信息 验证/中转
图2 启动服务器界面
2、运行QqClientLogin.java qq客户端登录界面
图3 客户端登录界面
3、在登录界面中输入QQ号码和密码,点击登录进入好友列表。
图4 好友列表图5 陌生人列表图6 2号用户列表
此例中QQ号码是1~50中的任一数字,密码是123456,输入号码1,登录后如图4所示。点击陌生人列表如图5所示,登录2号用户,刚1、2在线用彩色头像显示,不在线好友用灰色头像显示,如图6所示。
5、当用户5登录时,在用户1、2列表中同时更新在线用户,如图7所示。
图7 用户好友更新列表
6、通信界面
打开两个用户聊天窗口,在信息输入框中输入聊天内容,点击发送按钮,即可实现客户端的通信,通信情况如图8所示
图8 单用户通信界面
该QQ系统也可以实现多用户之间的通信,如图9所示。
图9 多用户通信界面
3总结
3.1总结
该项目没有使用到数据库,实现了登录,与好友聊天等的qq简易功能,基本满足了结构化、界面友好、速度快、安全性以及稳定性等特点。但功能还行欠缺,比如:在线添加用户、离线留言、在线传递文件、视频聊天、语音聊天等,都不能实现,同时界面也不够美观,希望能进一步完善。
3.2收获和体会
本文设计的聊天系统,功能比较单一,需要进一步改进,在设计的过程中,加深了我对网络层的架构和实现方式的了解,让我对计算机网络的Socket编程进行了深入的学习,清楚了客户端与服务器在java编程中的流程,学习到不少知识。通过这次大作业设计,自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅,这些无疑会给我今后的工作和学习带来很大的帮助。