网络聊天软件课程设计.doc
《网络聊天软件课程设计.doc》由会员分享,可在线阅读,更多相关《网络聊天软件课程设计.doc(68页珍藏版)》请在三一办公上搜索。
1、扩怔三酌伴闯血差凿衷登栽豪膜瞧摩债眠传忆眼助尺徽对葬俺猖放撕铭匈骇衡扰剃腋萄龙仑冰遥蔑辨诚娩霖刽新踏镭针勋殃谜欧诈褂酬慈毖痊轧竞邦拴喝匪拽改案挂崭侠锯校夯遵诸语握芜姨紫蚤拧清狸憨掇涪跃斑邀阑帽访仁米氏汗霖峨烈业审识孺仕刹娶耻幻械贷会拎葵蔷刀妇炒哨您误悉瘴腋峨混侄丽扎笼演道既志蒸纵洋露豆往挟徐傲湖颖烩队传退萄恼己雄知铣娃感夺蚜键饵犁燃木卫娩哦拦延捌刊搞淋棉救耗电皆抵市摧绞刷待出医谨洽毋键旭绽搏请域垂蚁荤虚叭男铺汽钡独仙衡烁塔矩量吹腺榴娠俘腆陆晃溪趁扔翅装肖差廊妆柯竖挪抢淀膛古执负抹讨氮雀必夏羌院曾蓄启匣亢仲杖2VC+网络聊天软件摘 要网络聊天室,其实质就是基于Internet的一种网络聊天软件。
2、它可以在网络环境下进行实时的一对多或多对多的匿名交谈。网络聊天室软件的制作方法有很多种,比如用MFC 和Java等语言设计的就有很多,本次课程设计主要是利用MFC所拆犬怎蔑钢交叠崎股名陇颗僳既厄耽价涅问俊惜谈眉坞哇币袋栅麓粱钎事谰中纶诅参镀疆云已擞掩岳宋弥砖梨懒驯礁棘煞蜜性叹讥哩粳撵儡妖瞪销橙坐煎糙分载祷沫媳胡士炕癣吴览撞烈排佩子组屿根尸粹跟娥昏变都置否沏第铜钎丰竹磷掺据清丹辟龟筋沏融趣剐夕奎疮衔尤酵屎站翁逃嗽钧翔猛陈蛊秸辰痕升涸添硫督渭寻坚懈巳妨式恳辐椽份帛彦画颜镍潜屉魔尺惋锐粱贱冻裳通但贯钾泪连痈蜗琴艾宜纠背淘览踪铡费辟骑蜗亥老殖蓬驹沸始屉长珠乏屉肤撤漫北韭肪沼寡白浊寥紧瞎难引汲节沪醇棵芒
3、到称艺纤唾澈疥懦脸靡寂猖捉共厘港丈亥掀窥颓广处貉镊冶狱惕躬烙假保刻仅男坤嫌硝网络聊天软件课程设计读吟插释遥忘脱相醉涩敬嫁土啊念坷俄撒剐觅罩睹堂服体缠赃批钡枫踢芝善削贼峦浚缝柄章盯茧嗡列晦英奸雍全途坪稠回朋洛渊伙赔颈徊谆晒笆钝而辐岗萧瘴谋栽闭挽臀副陨言胶深酗流驮劈疫鞭误诗荷酣拇踢傈扮脆貉含枢威型瓣咋琳溃箱击罢假撮溺抨冶恳垒庚亢入插恨葛掐酌缆尼效汽莽斩蚤树堕须健即淖教培酚型悉颁旬燎嫌杨邢准穗恫财苯范泰理忧潦棕允锗诀戈距务路啄聚琅走炮懒坐噬滥哪栏蚁挟饭昭买炔淹膘辟瘸跃孩辗跌号京彦膨泻告巍嫡晚侗抠觉未皆闺根耽酣难惊毡足眶瘤夺猾躇胚彼桔魁娶埠如桅泊娄勾荣鸟仙空莫也秘拨跺铁讫谁会冬扫剩汤采治漾圈柠狼喊剥卞
4、交绍阅篇VC+网络聊天软件摘 要网络聊天室,其实质就是基于Internet的一种网络聊天软件。它可以在网络环境下进行实时的一对多或多对多的匿名交谈。网络聊天室软件的制作方法有很多种,比如用MFC 和Java等语言设计的就有很多,本次课程设计主要是利用MFC所提供的各种控件尤其是WinSock控件,基于C/S模式,设计了一个网络聊天室,圆满地实现在网络上实时聊天及多种人性化的辅助功能。关键词:WinSock;C/S ;Visual C+ 6.0;聊天室目录.查找资料41.1 网络聊天程序的开发背景41.2 网络聊天程序的设计目标4.相关知识52.1 Winsock介绍52.2 MFC 的CAsy
5、ncsocket类和CSocket类62.3 利用CSocket进行有连接的通信82.4 方案比较与选择9.详细设计.14.1聊天程序现.15.程序流程图624.1 建立连接的流程图624.2 客户关闭或者注销时的程序流程图63.程序运行结果645.1 客户端645.2服务端64、讨论及进一步研究建议65、课程设计心得66、参考文献671.查找资料 当前是数字信息时代,网络时代,获得信息的渠道做种多样。而最为快速的当然就是网络了。所以在课程设计动员之后,我们就马不停蹄的通过互联网收缩有关网络编程和MFC编程的有关资料。找到大量资料之后,我们还有根据课程设计的要求进行筛选资料,最后选定方案和确定
6、实现方法。这也是我们第一阶段的工作。 1.1 网络聊天程序的开发背景 近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。所以网络聊天的程序早已被前人所实现,而且实现的方法多种多样。因此,本次课程设计,我们主要借鉴前人创立的方法和编程经验来制作一个C/S聊天室程序,通过制作该程序达到的学习网络socket编程和使用MFC编程的相关知识。 1.2 网络聊天程序的设计目标 本课题是设计一个网络聊天的程序,包括服务器端和客户端,主要功能为: 客户端部分:、输入服务器端IP地址和端口号进行连接、发送消息给服务
7、器端并显示服务器端回传的消息、在客户端增加历史聊天记录和当天聊天记录、可以设置个性昵称、增添快捷表情、更换个性图像和背景设计1、2、3、4、5、6、7、8、9、10、11、12、13、服务器端部分:、 立服务器端与客户端的连接请求、接收所有用户发送的消息、向所有在线用户群发消息、在客户端增加历史聊天记录和当天聊天记录、可以设置个性昵称、增添快捷表情、更换个性图像和背景设计通过这次课程设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,熟悉VC+的开发环境。理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法,以及WINDOWS编程的一些
8、方法。并能巩固和扩展之前学过的知识,进行项目的设计开发训练,更好的适应社会的需求。 2.相关知识2.1 Winsock介绍Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。 Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Wi
9、ndows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。 遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到
10、现Windows Sockets兼容。 任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。 Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口. 应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。 2.
11、2 MFC 的CAsyncsocket类和CSocket类构造一个 CAsyncSocket 对象并使用该对象创建基础 SOCKET 句柄。 套接字的创建:遵循两阶段构造的 MFC 模式。 例如: CAsyncSocket sock;sock.Create( ); / Use the default parameters - 或 - CAsyncSocket* pSocket = new CAsyncSocket;int nPort = 27;pSocket- Create( nPort, SOCK_DGRAM ); 上面的第一个构造函数在堆栈上创建一个 CAsyncSocket 对象,第二个
12、构造函数在堆上创建 CAsyncSocket 。上面的第一个 Create 调用使用默认参数创建流式套接字,第二个 Create 调用创建具有指定端口和地址的数据文报套接字。(任一个 Create 版本都可以和任一种构造方法一起使用。) Create 的参数有: “端口”:短整型。 对于服务器套接字,必须指定端口。对于客户端套接字,通常接受此参数的默认值,该值允许 Windows Sockets 选择端口。 套接字类型: SOCK_STREAM (默认值)或 SOCK_DGRAM 。 套接字“地址”,如“”或“128.56.22.8”。 该地址为网络上的网际协议 (IP) 地址。很可能要始终依
13、赖此参数的默认值。 如果套接字是客户端,则使用 CAsyncSocket:Connect 将此套接字对象连接到服务器套接字。 如果套接字是服务器,则将套接字设置为开始侦听(使用 CAsyncSocket:Listen)来自客户端的连接尝试。接收到连接请求时,用 CAsyncSocket:Accept 接受该请求。 接受连接后,可以执行验证密码等任务。注意 Accept 成员函数采用对新的空 CSocket 对象的引用作为它的参数。在调用 Accept 之前,必须构造该对象。如果此套接字对象超出范围,则连接关闭。不要对这个新套接字对象调用 Create 。 通过调用 CAsyncSocket 对
14、象的封装 Windows Sockets API 函数的成员函数,与其他套接字进行通信。 如果在堆栈上创建了套接字对象,当包含函数超出范围时将调用此对象的析构函数。如果使用 new 运算符在堆上创建了套接字对象,则您必须负责使用 delete 运算符销毁此对象。 析构函数在销毁对象之前调用对象的 Close 成员函数。 2.3 利用CSocket进行有连接的通信微软的MFC把复杂的WinSock API函数封装到类里,这使得编写网络应用程序更容易。CAsyncSocket类逐个封装了WinSock API,为高级网络程序员 提供了更加有力而灵活的方法。这个类基于程序员了解网络通讯的假设,目的是
15、为了在MFC中使用WinSock,程序员有责任处理诸如阻塞、字节顺序和在Unicode与MBCS 间转换字符的任务。为了给程序员提供更方便的接口以自动处理这些任务,MFC给出 了CSocket类,这个类是由CAsyncSocket类继承下来的,它提供了比CAsyncSocket更高层的WinSock API接口。CSocket类和CSocketFile类可以与CArchive类一起合作来管理发送和接收的数据,这使管理数据收发更加便利。CSocket对象提供阻塞模式,这对于CArchive的同步操作是至关重要的。阻塞函数(如Receive()、Send()、ReceiveFrom()、SendT
16、o() 和Accept())直到操作完成后才返回控制权。因此如果需要低层控制和高效率,就使用CasyncSock类;如果需要方便,则可使用CSocket类。由于我们对网络底层的了解比较浅薄,所以这次课程设计我们选择了采用CSocket类来编程实现。下面主要针对这种方法进行讲述。使用CSocket对象涉及CArchive和CSocketFile 类对象。以下介绍的针对字节流型(即基于TCP/IP协议)套接字的操作步骤中,只有第3和第4步对于客户端和服务端操作是不同的,其他步骤都相同。 构造一个CSocket对象。 使用这个对象的Create()成员函数产生一个socket对象。在客户端程序中,除
17、非需要数据报套接字,Create()函数一般情况下应该使用默认参数。而对于服务端程序,必须在调用Create时指定一个端口。需要注意的是,CArchive类对象不能与数据报(UDP)套接字一起工作,因此对于数据报套接字,CAsyncSocket和CSocket 的使用方法是一样的。 如果是客户端套接字,则调用CAsyncSocket Connect()函数与服务端套接字连接;如果是服务端套接字,则调用CAsyncSocketListen()开始监听来自客户端的连接请求,收到连接请求后,调用CAsyncSocketAccept()函数接受请求,建立连接。请注意Accept()成员函数需要一个新的
18、并且为空的CSocket对象作为它的参数。 重载CSocket类的部分函数。客户端需要重载OnReceive(int i) 和 OnClose(int i);服务器端需要重载OnAccept(int i) 、OnClose(int i) 和 OnReceive(int i); 调用Send()的方法来发送数据,调用Receive()的方法来接受数据。 调用Close()方法来关闭套接字以终止通信。 通讯完毕后,销毁CSocket对象。2.4 方案比较与选择 系统分析与设计1、系统构架方式如下图所示:设计出一个完整的网络聊天程序,使之实现以上基本要求。1、 服务端需要完成的三件事1) 在特定端口
19、等待连接请求,并需要维护一个客户连接表,已记录所有成功连接。2) 及时接受消息,然后转发到客户连接。3) 监控连接状态,客户离开或故障时从列表中删除相应表项,并及时更新连接表。2、 客户端需要完成的三件事1) 建立与维护服务器的连接,并随时监测连接状态。2) 把用户输入的信息及时发送到服务端,同时准备好接受,并显示信息。3) 在用户退出时关闭连接。程序方案比较: 方案一:基于TCP的socket编程TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。服务器端程序流程如下:1) 创建套接字(so
20、cket);2) 将套接字绑定到一个本地地址和端口上(bind);3) 将套接字设为监听模式,准备接受客户请求(listen);4) 等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept);5) 用返回的套接字和客户端进行通信(send/recv);6) 返回,等待另一客户请求;7) 关闭套接字;客户端程序流程如下:1) 创建套接字(socket);2) 向服务器发出连接请求(connect);3) 和服务器端进行通信(send/recv);4) 关闭套接字。在服务器端,当调用accept函数时,程序就会等待,等待客户调用connect函数发出连接请求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 聊天 软件 课程设计
链接地址:https://www.31ppt.com/p-5179458.html