MFC下CSocket编程详解

MFC下CSocket编程详解

ID:41033308

大小:241.50 KB

页数:9页

时间:2019-08-14

MFC下CSocket编程详解_第1页
MFC下CSocket编程详解_第2页
MFC下CSocket编程详解_第3页
MFC下CSocket编程详解_第4页
MFC下CSocket编程详解_第5页
资源描述:

《MFC下CSocket编程详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、MFC下CSocket编程详解:1.常用的函数和注意事项(详细的函数接口说明请查看MSDN):CSocket::Create初始化(一般写服务器程序都不要用为好,用下面的CSocket::Socket初始化)CSocket::Socket初始化CSocket::SetSockOpt设置socket选项CSocket::Bind绑定地址端口CSocket::Connect连接CSocket::Listen监听CSocket::Accept接收外部连接的socketCSocket::Send发送内容CSocket::Receive接收内容CSocket::Close关闭(不等于delete

2、)1)在使用MFC编写socket程序时,必须要包含头文件。2)AfxSocketInit()这个函数,在使用CSocket前一定要先调用该函数,否则使用CSocket会出错;并且该函数还有一个重要的使用方式,就是在某个线程下使用CSocket前一定要调用,就算主线程调用了该函数,在子线程下使用CSocket也要先调用该函数,要不会出错。3)还要注意的是,Create方法已经包含了Bind方法,如果是以Create方法初始化的前提下不能再调用Bind,要不一定出错。2.以下是使用例子代码,通过例子来学习如何使用CSocket进行编程,1)客户端主要代码://初始化

3、AfxSocketInit();//创建CSocket对象CSocketaSocket;CStringstrIP;CStringstrPort;CStringstrText;this->GetDlgItem(IDC_EDIT_IP)->GetWindowText(strIP);this->GetDlgItem(IDC_EDIT_PORT)->GetWindowText(strPort);this->GetDlgItem(IDC_EDIT_TEXT)->GetWindowText(strText);//初始化CSocket对象,因为客户端不需要绑定任何端口和地址,所以用默认参数即可if(

4、!aSocket.Create())...{charszMsg[1024]=...{0};sprintf(szMsg,"createfaild:%d",aSocket.GetLastError());AfxMessageBox(szMsg);return;}//转换需要连接的端口内容类型intnPort=atoi(strPort);//连接指定的地址和端口if(aSocket.Connect(strIP,nPort))...{charszRecValue[1024]=...{0};//发送内容给服务器aSocket.Send(strText,strText.GetLength());/

5、/接收服务器发送回来的内容(该方法会阻塞,在此等待有内容接收到才继续向下执行)aSocket.Receive((void*)szRecValue,1024);AfxMessageBox(szRecValue);}else...{charszMsg[1024]=...{0};sprintf(szMsg,"createfaild:%d",aSocket.GetLastError());AfxMessageBox(szMsg);}//关闭aSocket.Close();2)服务器端代码:unsignedintStartServer(LPVOIDlParam)...{//初始化Winscoki

6、f(!AfxSocketInit())...{AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return1;}m_exit=false;CServerDlg*aDlg=(CServerDlg*)lParam;CStringstrPort;aDlg->GetDlgItemText(IDC_EDIT_PORT,strPort);UINTnPort=atoi(strPort);//socket------------------------------------------------CSocketaSocket,serverSocket;//最好不要使用a

7、Socket.Create创建,因为容易会出现10048错误if(!aSocket.Socket())...{charszError[256]=...{0};sprintf(szError,"CreateFaild:%d",GetLastError());AfxMessageBox(szError);return1;}BOOLbOptVal=TRUE;intbOptLen=sizeof(BOOL);//设置Socket的选项,解决10048错误

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

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

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