资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,网络编程技术,简易聊天室,授课教师:,网络编程,导入,在电子教室软件系统中,教师经常需要根据课程内容将学生分组,每个小组完成一个任务。每个小组的小组成员之间需要进行讨论,所以需要有一个简单的聊天室功能,使多个成员之间可以很方便的进行沟通和交流。本章我们就通过一个简单的聊天室程序,来介绍一下使用,UDP,协议进行通信的相关技术。,本章要点,聊天室功能分析设计,WinSock,实现,UDP,通信,CSocket,类实现,UDP,通信,聊天室开发,功能需求分析,聊天室服务器功能:,启动一个新的聊天室。,能记录所有登录的聊天者信息。,能接收聊天者程序发来的聊天信息,并显示到界面上。,能把一个聊天者发来的信息发送给所有其他聊天者。,聊天者程序功能:,能登录到聊天室服务器。,能发送聊天信息给聊天室服务器。,能接收服务器发回的其他人的聊天信息,并显示在自己的界面上。,界面设计,关键技术分析,聊天室的核心功能就是多个点之间的数据传递,本章讲解另一种面向非连接的基于,UDP,协议的,socket,通信技术来实现聊天室实例,面向非连接的通信,“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。,与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就可以了。,UDP,(,User Data Protocol,,用户数据报协议)是与,TCP,相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。,UDP,通信流程图,核心程序实现,发送和接收的的数据包的定义,struct,MEG,int,code;/,包的编号,char data500;/,数据内容,Meg;,c,ode,:数据包的编号,d,ata,:要传输的数据,核心程序,发送,UDP,数据包,void,CSendUDPDlg:OnSend,(),UpdateData(true,);,struct,MEG/,发送数据对象的定义,int,code;/,包的编码,char data500;,Meg;,CSocket,m_SendSocket,;/,构造一个套接字对象,Meg.code,=1;,strcpy(Meg.data,m_message,);/,发送数据的初始化,int,port=8888;/,对方的监听端口,m_SendSocket.Create(6666,SOCK_DGRAM,);/,创建一个套接字句柄(,UDP,),m_SendSocket.SendTo,(&,Meg,sizeof(Meg),port,m_ip,);,m_SendSocket.Close,();,核心程序,接收,UDP,数据包,void,CReceiveUDPDlg:OnServer,(),struct,MEG,int,code;/,包的编码,char data500;,*,pMeg,;,CSocket,m_ReceiveSocket,;/,构造一个套接字对象,char*buff512;,m_ReceiveSocket.Create(8888,SOCK_DGRAM,);,m_ReceiveSocket.Receive(buff,512);,pMeg,=(,struct,MEG*)buff;/,非常关键,m_show.AddString(pMeg,-data);,m_ReceiveSocket.Close,();,程序扩展,实现点对点聊天,接收对方聊天信息功能流程,程序扩展,实现聊天室,聊天室程序设计的思路是由一个服务器端程序和一个聊天者端程序组成。,服务器端程序主要负责记录所有进入本聊天室的聊天者的,IP,地址,并且接收所有聊天者的信息,将每个聊天者发来的信息转发给所有聊天者。,聊天者程序可以发送聊天信息给服务器,同时可以接收服务器发送回来的信息,并显示到聊天记录界面上。,聊天室服务器端程序主要功能:,(,1,)记录所有进入本聊天室的聊天者,IP,(以便转发其他聊天者的聊天信息)。,(,2,)启动一个子线程,用于接收聊天者数据包。,(,3,)接到数据包,取出,IP,地址,存入聊天者列表(重复的不要)。,(,4,)将接收到的聊天信息转发给聊天者列表中的每个聊天者。,(,5,)将接收到的聊天信息添加到界面的列表控件中。,聊天室服务器功能流程,聊天者程序功能:,(,1,)进入聊天室,发送数据包给聊天室服务器。,(,2,)接收服务器发送回来的信息,并显示到聊天记录界面上。,实现代码详见教材,本章技能训练实例,题目一:将第一章的扫描可控计算机程序改为用,UDP,协议的通信技术实现。,题目二:将前一章的网络考试报名系统改为基于,UDP,协议的通信技术实现。,题目三:模仿群的模式,给你的几个好朋友建立一个共用的聊天群。可以几个人一起讨论需求和设计,在本章的简易聊天室程序基础上完善和开发,完成这个小应用软件,并在实际使用过程中测试它。,Thank You!,
展开阅读全文