欢迎来到天天文库
浏览记录
ID:34761444
大小:381.68 KB
页数:27页
时间:2019-03-10
《实验二即时通信应用开发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、广西大学计算机科学与技术专业计算机网络编程实验计科121刘志恒12073001202014年11月实验二即时通信应用开发一、预备知识1.即时通信即时通信(InstantMessenger,简称IM),是一种基于互联网即时发送和接收消息的工具。随着网络的迅速发展,即时通信软件由1998年出现时的单一聊天工具,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能,发展成为具有交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。2.P2PP2P(对等计算)可以简单的定义
2、成通过直接交换来共享计算机资源和服务,而对等计算模型应用层形成的网络通常称为对等网络。在P2P网络环境中,成千上万台彼此连接的计算机都处于对等的地位,整个网络一般来说不依赖专用的集中服务器。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求作出响应,提供资源和服务。通常这些资源和服务包括:信息的共享和交换、计算资源(如CPU的共享)、存储共享(如缓存和磁盘空间的使用)等。3.CSocket类CSocket是MFC在CAsyncSocket基础上派生的一个同步阻塞Socket的封装类,
3、它的定义包含在中。其中常用函数有:函数名作用CSocket::Socket()初始化(主要用于服务器初始化)CSocket::SetSockOpt()设置socket选项CSocket::Bind()绑定地址端口CSocket::Connect()连接CSocket::Listen()监听CSocket::Accept()接收外部连接的socketCSocket::Send()发送内容CSocket::Receive()接受内容CSocket::Close()关闭(不等于del
4、ete)一、实验目的1.了解IM软件的体系结构;2.掌握TCPSocket的CSocket类;3.掌握TCP/IP体系结构中端口、套接字、TCP协议概念;4.掌握TCPSocket技术中多线程技术;5.学会解决实验中遇到的问题。二、实验任务使用VisualStudio开发平台编写基于P2P架构的简单聊天工具,并能成功运行。三、实验环境及工具1.Windows2000/XP/72.VisualC++开发平台3.VisualStudio2010四、实验内容和步骤1.创建项目工程,设计软件界面1.构建软件
5、的框架1)定义变量和声明方法:LRESULTOnReadMsg(WPARAMwParam,LPARAMlParam);//用于接收P2P网络中其他进程发来的消息voidEnrolUsr(CStringstrMsgData);//登记注册用户voidUpdUsr(CStringstrMsgData);//更新用户列表voidPtoPsrvProvdr(CStringstrMsgData);//提供P2P地址服务voidSendMsgtoPer(CStringstrMsgData);//向对方发送聊天信
6、息voidShowMsgfrmPer(CStringstrMsgData);//显示对方发来的聊天内容voidStartSndSocket(CStringmsgtoSnd,CStringsIP,CStringsPort);//临时开启一个专用于发送消息的套接字public:SOCKETSelfSndSocket;//本机进程用于发送消息的SOCKETSOCKETSelfRcvSocket;//本机进程用于接收消息的SOCKETSOCKADDR_INm_sockSelfSndAddr;//SOCKET
7、结构,发送进程的默认地址(127.0.0.1:8888)SOCKADDR_INm_sockSelfRcvAddr;//SOCKET结构,接收进程的地址(用来标识各个端系统)SOCKADDR_INm_sockAddrto;//SOCKET结构,指定将要向哪个地址发消息RgstdUsrrstUsr[100];intrstUsrCont;//注册用户数intonlUsrCont;//在线用户数Msgmsgbuf;CStringRegisterAddr;//注册类消息CStringOnlUsrInfo;//
8、在线更新类消息CStringPtoPsrvReqst;//服务请求类消息CStringPtoPsrvRspse;//服务响应类消息CStringMsgTalktoPeer;//聊天信息类消息intsocklen;2)建立程序的事件驱动机制LRESULTCP2PTalkerDlg::OnReadMsg(WPARAMwParam,LPARAMlParam){//接收其他端系统发来的消息CStringstr,strHead,strData;switch(WSAGETSELE
此文档下载收益归作者所有