实验四_MFC网络编程-免费下载

实验四_MFC网络编程-免费下载

ID:41033156

大小:112.00 KB

页数:6页

时间:2019-08-14

实验四_MFC网络编程-免费下载_第1页
实验四_MFC网络编程-免费下载_第2页
实验四_MFC网络编程-免费下载_第3页
实验四_MFC网络编程-免费下载_第4页
实验四_MFC网络编程-免费下载_第5页
资源描述:

《实验四_MFC网络编程-免费下载》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1、新建一个基于对话框、支持Windowsockets的MFC可执行应用程序(exe);2、设计如图所示界面:(1)对话框控件ID设置(2)接收数据框架:IDC_STATIC(3)接收数据编辑框:IDC_EDIT_RECV(4)发送数据编辑框:IDC_STATIC(5)IP地址控件:IDC_IPADDRESS1(6)发送数据编辑框:IDC_EDIT_SEND(7)发送命令按钮:IDC_BTN_SEND3、在MFC中调用AfxSocketInit()加载套接字库,参考MSDN两个版本:(1)在CWinApp::InitInstance中调用;(2)在Std

2、Afx.h中包含Afxsock.h头文件源码:if(!AfxSocketInit()){AfxMessageBox("加载套接字库失败!");returnFALSE;}1、创建并初始化套接字,为C***Dlg类添加一个private权限SOCKET类型的变量m_socket和一个BOOL类型的InitSocket()成员函数,在OnInitDialog()函数中调用InitSocket()函数实现初始化:函数实现代码如下:BOOLCCHATDlg::InitSocket(){m_socket=socket(AF_INET,SOCK_DGRAM,0);if

3、(INVALID_SOCKET==m_socket){MessageBox("套接字创建失败!");returnFALSE;}SOCKADDR_INaddrSock;addrSock.sin_family=AF_INET;addrSock.sin_port=htons(6000);addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);intretval;retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));if(SOCKET_ERROR==retv

4、al){closesocket(m_socket);MessageBox("绑定失败!");returnFALSE;}returnTRUE;}1、实现接收端功能接收数据的时候会有阻塞,处理方式使用一个单独的线程,采用CreateThread();(1)先在C***Dlg类的前面定义一个结构体:structRECVPARAM{SOCKETsock;HWNDhwnd;};(2)在OnInitDialog()函数中定义一个RECVPARAM类型的指针,然后初始化:RECVPARAM*pRecvParam=newRECVPARAM;pRecvParam->soc

5、k=m_socket;pRecvParam->hwnd=m_hWnd;HANDLEhThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL);CloseHandle(hThread);(3)在C***Dlg类添加函数成员,写线程函数:staticstaticDWORDWINAPIRecvProc(LPVOIDlpParameter);//定义线程函数DWORDWINAPICCHATDlg::RecvProc(LPVOIDlpParameter){SOCKETsock=((RECVPARA

6、M*)lpParameter)->sock;HWNDhwnd=((RECVPARAM*)lpParameter)->hwnd;deletelpParameter;SOCKADDR_INaddrFrom;intlen=sizeof(SOCKADDR);charrecvBuf[200];chartempBuf[300];intretval;while(TRUE){retval=recvfrom(sock,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);if(SOCKET_ERROR==retval)break;sprintf

7、(tempBuf,"%s说:%s",inet_ntoa(addrFrom.sin_addr),recvBuf);//利用PostMessage将消息传递给对话框。::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);}return0;}(4)在C***Dlg类上线定义消息的值:#defineWM_RECVDATAWM_USER+1消息响应函数原型的声明afx_msgvoidOnRecvData(WPARAMwParam,LPARAMlParam);消息映射:ON_MESSAGE(WM_RECVDATA,OnR

8、ecvData)消息响应函数的实现:voidCChatDlg::OnRecvDa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。