版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信软件技术及应用姓名:王兵学号: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 刻苦拼搏攀登人生理想的巅峰-一位清华在校生的报告
- 电气机械工程投资分析考核试卷
- 合成材料在智能分析中的应用考核试卷
- 医药制造业创新药物研发与商业化考核试卷
- 数字医疗与健康管理整合资源提升效果考核试卷
- 公司安全体系基础知识培训考核试卷
- 建筑装饰与绿色建筑认证的标准解析考核试卷
- 企业治理与安全文化的关系考核试卷
- DB11T 494.8-2013 人力资源服务规范 第8部分:培训服务
- DB11-238-2021 车用汽油环保技术要求
- GB/T 17892-2024优质小麦
- 南京市2024-2025学年六年级上学期11月期中调研数学试卷二(有答案)
- 江苏省镇江市第二中学2023-2024学年高二上学期期中考试数学试卷(无答案)
- 2023-2024学年全国初一下生物人教版期末考试试卷(含答案解析)
- 2024年甘肃省陇南市武都区人民法院招聘18人历年高频难、易错点500题模拟试题附带答案详解
- 2024至2030年中国自动车配件行业投资前景及策略咨询研究报告
- 2024-2030年中国虚拟专用网络(VPN)行业市场行业发展分析及发展前景研究报告
- 检验检测机构内审员检查表
- 2024中煤电力限公司面向中煤集团内部招聘15人高频难、易错点500题模拟试题附带答案详解
- 统编版(2024新版)七年级上册历史第二单元 夏商周时期:奴隶制王朝的更替和向封建社会的过渡 单元复习课件
- 高危儿规范化健康管理专家共识解读
评论
0/150
提交评论