欢迎来到天天文库
浏览记录
ID:3670468
大小:226.85 KB
页数:13页
时间:2017-11-22
《基于vc++6.0的udp聊天器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸目录一、需求分析2二、功能介绍2三、设计步骤2四、详细设计3五、设计总结6六、程序清单7七、参考文献13一、需求分析共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸1、设计目的学会使用Winsock控件的UDP方式实现网络聊天程序,了解基于面向无连接方式连接的程序设计方式。开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台计算机之间信息的交流。UDP聊天器是具有很好的适应性和实用性的即时
2、通讯软件。2、网络技术背景UDP是无连接的,在协商过程中,不需要与应答方建立连接,而是直接吧数据包发送给对方。由于UDP的不可靠性,它适用于一次性传送少量数据,并要求的可靠性不高的环境。3、编程环境VC++6.0;基于MFC编程一、功能介绍基于UDP实现一对一的局域网聊天功能l输入服务器端IP地址和聊天人名字l发送消息给服务器端,并显示服务器端回传的消息l接受客户端发送的消息,转发消息给客户端,并显示客户端的消息l使用配置文件chat.ini保存配置信息二、设计步骤1.服务器端创建套接字(socket)将套接字绑定到一个本地的IP地址及端口上,等待接受
3、对端数据(receive),关闭套接字。2.客户端创建套接字,向服务器发送数据(sendto),关闭套接字。三、详细设计1、流程图共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸开始UDP服务器Socket()UDP客户socket()Bind()ReceivefromSendto()数据请求NOYES处理请求数据应答Receivefrom()Sendto()Close()结束(图4.1.1总体流程图)开始读取配置信息共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊
4、┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸启动服务器创建套接字,用于收发信息数据接收包数据接收包发送消息保存配置信息结束(图4.1.2服务器模块流程图)开始读取配置信息客户端共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸创建套接字,用于收发信息数据发送包数据发送包输入服务器IP发送消息保存配置信息结束(图4.1.3服务器模块流程图)2、界面设计(图4.2.1初始客户端和服务器端界面)共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设
5、计纸(图4.2.2服务器端)(图4.2.3客户端)一、设计总结在UDP聊天器的设计过程中,加深了对理论知识和VC++6.0控件及MFCSocket的理解,掌握了socket(),bind(),sendto()和recvfrom()函数的使用方法,感受到MFC设计的界面相比DOS命令行界面更加便捷和灵活。使我的网络编程能力得到了提高。同时,也发现了许多不足之处,如发送信息的长度受到限制,不能满足用户更多字数的聊天需求,这个问题,将是我今后调整和修改设计的方向。在这次的课程设计中,我充分体会到团队合作的重要性。共13页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊
6、┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊长春大学课程设计纸一、程序清单主要程序代码:UDP服务器端:SOCKETsock;UINTthread(LPVOIDv){CUDPDlg*dlg=(CUDPDlg*)AfxGetApp()->GetMainWnd();//取得主窗口的句柄SOCKETsock;SOCKADDR_INsin;sock=socket(AF_INET,SOCK_DGRAM,0);//建立UDP套接字if(sock==SOCKET_ERROR){AfxMessageBox("产生Sock失败!");return-1;}sin.si
7、n_family=AF_INET;sin.sin_addr.s_addr=htonl(INADDR_ANY);sin.sin_port=htons(RECV_PORT);if(bind(sock,(SOCKADDR*)&sin,sizeof(sin))==SOCKET_ERROR)//绑定套接字{AfxMessageBox("绑定套接字出错!");closesocket(sock);return-1;}while(true){charszBuffer[4096];DWORDdwRead=0;SOCKADDRsa;intnLen;intnSaLen=si
8、zeof(sa);nLen=recvfrom(sock,szBuffer,sizeof(szB
此文档下载收益归作者所有