资源描述:
《Windows网络编程实验七》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于MFC的网络聊天软件设计指导教师:贾浩学生学号:20131256学生姓名:张鹏飞-9-摘要UDP是UserDatagramProtocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 WSAAsyncSelect模型允许应用程序以windows消息的形式接受网络事件通知,这个模型是为了适应windows的消息驱动环境而设置的,现在许多对性能要求不高的网络应用程序都采用此模型。关键词:UDP,C/C++,C/S模型目录一、引言-3-1.1选题背景-3-1.2选题目的-3-二、
2、相关基础技术与开发平台-3-2.1C/S模型设计-3-2.2开发平台-4-三、系统需求分析与总体设计-4-3.1需求分析-4-3.1.1用户需求-4-3.1.2功能需求-4-3.1.3性能需求-4-3.2设计思路-4-四、系统模块的实现-5-五、系统测试及问题处理-8-5.1测试环境-8-5.2测试结果-8-5.3测试总结-9-六、结论-9-参考文献-9--9-一、引言1.1选题背景近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,
3、更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天软件作为一种方便消费者与人们之间联系的实用系统便应运而生。网上聊天软件是为人们进行交流和联系提供的一个平台。通过提供完善的网上聊天软件的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的。1.2选题目的网络聊天软件作为现代社会必备的常用工具,它缩短了人与人之间的距离,为身处异地的人提供一个便宜、便捷的交流方式。同时也为可更好的理解网络程序设计这门课程,更好的理解数据时如何在网络上传递的。二、
4、相关基础技术与开发平台2.1C/S模型设计客户机/服务器在分布处理过程中,使用基于连接的网络通信模式。该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。这就是典型的“请求--应答”模式。下面是客户机/服务器的一个典型运作过程:(1)服务器监听相应端口的输入;(2)客户机发出一个请求;(3)服务器接收到此请求; (4)服务器处理这个请求,并把结果返回给客户机;。本设计由于使用的
5、是tcp数据传输,服务器接受数据使用监听模式,而是当套接字收到数据时直接显示在对话框中。-9-使用的MFC做界面,用的里面消息映射。2.3开发平台1.Visualstdio20052.WindowsXP三、系统需求分析与总体设计3.1需求分析是一个聊天室3.1.1用户需求运行客户端连接服务器就可以实现在聊天室聊天。3.1.2功能需求聊天数据能够在线接受和发送,并打印在软件框内。3.1.3性能需求该程序能够在本地远程的机器之间进行交互。3.2设计思路本设计采用C/S模型,首先初始化动态链接库,然后初始化套接字选择异步选择模式,然后分别编写收发数据的
6、代码,套接字收到过来的数据时为数据分配空间然后存储并显示在聊天框中,若失败则返回失败信息;在发送消息时首先截取自己IP然后绑定空间,最后截取消息数据然后发送。-9-四、系统模块的实现BOOLCSever::setserver(HWNDhwnd,UINTport){WSADATAData;intstatus;m_hwnd=hwnd;m_port=port;status=WSAStartup(MAKEWORD(2,2),&Data);if(status!=0){AfxMessageBox("错误:WSAStartup没有成功",MB_OK
7、MB_IC
8、ONERROR);returnFALSE;}m_serversocket=socket(AF_INET,SOCK_STREAM,0);if(m_serversocket==INVALID_SOCKET){AfxMessageBox("错误:socket没有成功建立",MB_OK
9、MB_ICONERROR);returnFALSE;}status=WSAAsyncSelect(m_serversocket,m_hwnd,SER_MESSAGE,FD_ACCEPT
10、FD_READ
11、FD_CLOSE);m_serveraddr.sin_port=hto
12、ns(m_port);m_serveraddr.sin_family=AF_INET;m_serveraddr.sin_addr.s_a