




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信软件技术及应用姓名:王兵学号:2013213762班级:1301302题目序号:2一.题目内容二.简单的分析设计加消息处理框架的具体功能,判断是哪个套接字上发生了网络事件,使用WSAGET-SELECTEVENT三.程序源代码输入参数:WPARAMwParam消息传入参数,此处传入的是套接字句柄LPARAMIParam消息传入参数,此处传入的是事件类型。输出参数;TURE表示成功FALSE表示失败LRESULTCLANChatDlg::OnRecvFrom(WPARAMwParam,LPARAMlParam){intiResult;time_tticks;charbuff[MAXLINE],info[MAXLINE];charrecvbuf[MAXLINE];structsockaddr_incliaddr;intaddrlen=sizeof(sockaddr_in);CStringstr;memset(recvbuf,0,MAXLINE);//获取当獭前时骸间ticks=time(NULL);memset(buff,0,sizeof(buff));sprintf_s(buff,MAXLINE,"%.24s\r\n",ctime(&ticks));//判断网络事件if(WSAGETSELECTERROR(lParam))m_List.InsertString(0,"套接字错误");else{switch(WSAGETSELECTEVENT(lParam)){caseFD_READ://接收数据iResult=recvfrom(m_Socket,recvbuf,MAXLINE,0,(SOCKADDR*)&cliaddr,&addrlen);if(iResult==SOCKET_ERROR){sprintf_s(info,MAXLINE,"%s接收数据发生错误,错误号:%d",buff,WSAGetLastError());str=info;m_List.InsertString(0,str);return0;}sprintf_s(info,MAXLINE,"%s接收到来自%s的数据:",buff,inet_ntoa(cliaddr.sin_addr));str=info;m_List.InsertString(0,str+recvbuf);//更新通信对方地址·m_peer=cliaddr;break;default:break;}}return0;}2实现网络的初始化功能OnBnClickedBegin()接字的初始化,创建以及网络事件的注册等功能,代码如下voidCLANChatDlg::OnBnClickedBegin(){CSocketFrameframe;intiResult=0;UpdateData(TRUE);//WindowsSocketsDll初始化frame.start_up();//程序作为服务器if(m_nServerType==SERVER){//为服务器的本地地址m_local设置用户输入的IP和端口号memset(&m_local,0,sizeof(m_local));m_local.sin_family=AF_INET;m_local.sin_addr.S_un.S_addr=htonl(m_ulIP);m_local.sin_port=htons(m_usPort);//创建服务器端的数据报套接字并在指定端口号上监听m_Socket=frame.udp_server(0,m_usPort);if(m_Socket==-1){m_List.InsertString(0,"服务器启动失骸败");return;}m_List.InsertString(0,_T("服务器已启动"));}else{//创建客户端的数据报套接字并向服务器请求建立连接UpdateData(TRUE);if(m_ulIP==0||m_usPort==0){m_List.InsertString(0,"IP地址不能为空?");return;}//指明服务器的地址·m_peer为用户输入的IP和端口号memset(&m_peer,0,sizeof(m_peer));m_peer.sin_family=AF_INET;m_peer.sin_addr.S_un.S_addr=htonl(m_ulIP);m_peer.sin_port=htons(m_usPort);//创建客户端的数据报套接字?m_Socket=frame.udp_client(m_ulIP,m_usPort,FALSE);if(m_Socket==-1){m_List.InsertString(0,"客户端启动失败");return;}m_List.InsertString(0,_T("客户端已启动"));}iResult=WSAAsyncSelect(m_Socket,m_hWnd,WM_READ,FD_READ);if(iResult==SOCKET_ERROR){m_List.InsertString(0,"WSAAsyncSelect设定失败");return;}//更新对话框控件的可操作性GetDlgItem(IDC_SENDTEXT)->EnableWindow(TRUE);GetDlgItem(IDC_SEND)->EnableWindow(TRUE);GetDlgItem(IDC_IPADDRESS)->EnableWindow(FALSE);GetDlgItem(IDC_RADIO_SERVER)->EnableWindow(FALSE);GetDlgItem(IDC_RADIO_CLIENT)->EnableWindow(FALSE);GetDlgItem(IDC_PORT)->EnableWindow(FALSE);GetDlgItem(IDC_BEGIN)->EnableWindow(FALSE);}3实现聊天内容的发送功能OnBnClickedSend()函数中获取用户输入的聊天内容,将其封装到UDP协议数据中发送给目标地址,代码如下voidCLANChatDlg::OnBnClickedSend(){time_tcharticks;buff[MAXLINE],info[MAXLINE];intiResult=-1;//更新对话框里的数据YUpdateData(TRUE);if(m_SendText.GetLength()>MAXLINE){m_List.InsertString(0,"发送内容超长!?");return;}if(m_peer.sin_addr.S_un.S_addr==0){m_List.InsertString(0,"目标地址为空,请确?定正确的目标地址!");return;}//获取当前时骸间ticks=time(NULL);memset(buff,0,sizeof(buff));sprintf_s(buff,MAXLINE,"%.24s\r\n",ctime(&ticks));if(m_nServerType==SERVER){sprintf_s(info,MAXLINE,"%s服务器向%s发送数据Y:",buff,inet_ntoa(m_peer.sin_addr));}else{sprintf_s(info,MAXLINE,"%s客户端向%s发送数据:",buff,inet_ntoa(m_peer.sin_addr));}//发ぁ?送í数簓据YiResult=sendto(m_Socket,m_SendText.GetBuffer(m_SendText.GetLength()),m_SendText.GetLength(),0,(SOCKADDR*)&m_peer,sizeof(m_peer));if(iResult==SOCKET_ERROR){sprintf_s(info,MAXLINE,"sendto函数调用错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮企业品牌授权合同
- 天津商务职业学院《新药设计》2023-2024学年第一学期期末试卷
- 线上金融平台财产保全担保服务合同
- 专利权许可使用保函担保合同模板
- 华南农业大学珠江学院《智慧检验医学》2023-2024学年第一学期期末试卷
- 生态旅游园区场地合作运营协议
- 重庆五一职业技术学院《国际货运与保险》2023-2024学年第一学期期末试卷
- 江苏航运职业技术学院《道家与道教哲学》2023-2024学年第一学期期末试卷
- 云南艺术学院文华学院《舞蹈二》2023-2024学年第一学期期末试卷
- 赣州职业技术学院《微分方程II》2023-2024学年第一学期期末试卷
- 2025年中国农机流通行业市场全景评估及发展战略规划报告
- 2025-2030中国洗胃机产业运营现状分析与未来前景趋势展望报告
- Unit 2 Home Sweet Home 第3课时(Section A 3a-3c) 2025-2026学年人教版英语八年级下册
- 安全生产月题库-安全生产知识竞赛题库(1800道)
- 2025年计划生育与妇幼健康考试试题及答案
- 2025至2030中国废铜行业发展现状及发展趋势与投资风险报告
- 血管内导管相关性血流感染预防与诊治2025
- 国际教育机构外教派遣服务协议
- 【高二下期末】广东省东莞市2021-2022学年高二下学期期末教学质量监测英语试题(解析版)
- 2025年普通高等学校招生全国统一考试数学试题(全国二卷)(有解析)
- 呼吸病区进修管理制度
评论
0/150
提交评论