网络通信基础——MFC简单服务器客户端TCP通信

来源:互联网 发布:软件需求分析报告模板 编辑:程序博客网 时间:2024/05/19 11:44

今天看了下MFC的网络通信基础,把一些心得写写。

首先看看TCP的通信流程

 

新建了两个工程,一个服务器工程,一个客户端工程,别的不说,直接从使用顺序来分析程序的调用关系。

首先点击服务器界面上的开始监听,

m_sockListen.Create(10000);//创定并绑定端口,都是继承父类得来的函数

m_sockListen.Listen();//开始监听端口//监听端口开始以后,会调用m_sockListen的OnAccept,而后调用CTCPServerDlg::OnAccept,等待客户端的连接 

//这个函数是等待客户端请求连接的时候调用的

void CTCPServerDlg::OnAccept(){SOCKADDR sockAddr;

int nSockAddrLen = sizeof(SOCKADDR);

CString tmp;

//这是一个阻塞函数吧,没有客户端来连接的时候会一直阻塞在那里

if(m_sockListen.Accept(m_sockServer, &sockAddr, &nSockAddrLen))

{tmp.Format("有客户端连接,来自%d.%d.%d.%d\r\n",

(UCHAR)sockAddr.sa_data[2], (UCHAR)sockAddr.sa_data[3],

(UCHAR)sockAddr.sa_data[4], (UCHAR)sockAddr.sa_data[5]);

//m_szRecv与接收窗口关联的

m_szRecv+=tmp;UpdateData(FALSE);}}

然后就一直开始等待客户端的连接,当客户端连接服务器的时候,

char * lpIP = "192.168.137.4";//服务器地址//客户端连接请求发出后服务器的阻塞方法开始接收,accept——》onaccept,三次握手,没问题就连接成功后就会调用OnConnect成功

m_sockConnect.Connect(lpIP, 10000);//连接服务器MessageBox("测试用:连接服务器成功"); 

 

//点击连接服务器之后,Cmysocket会调用onconnect事件响应函数

void CTCPClientDlg::OnConnect(){UpdateData();

m_szRecv += CString("连接成功!\r\n");UpdateData(FALSE);} 

至此,服务器和客户端连接成功,进而要做的就是数据的相互传送,调用客户端的发送是,服务器会接受,反之也是,到此,简单通信就能OK了

过程中有一点要提,两个发送和接受窗口与变量相关联,所以操作起来也十分的方便

 

自己总结就到此,上面纯属自己的理解,如果错误希望帮我指出,多多交流。

下面是这个工程所在书的源码(第四章中)的下载地址:http://ishare.iask.sina.com.cn/f/15590196.html

原创粉丝点击