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

2020腾讯云7月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:【Socket网络通信】利用TCP/IP协议实现服务端与客户端的双向聊天

[服务器:     import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.In

今天看了下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],

推荐:C++服务器端+Android客户端的网络通信

[今天晚上11点半,在学校断网后的十分钟,我终于实现了C++服务器端与Android客户端的通信。本来很简单的一件事,却因为Android Socket线程阻塞的问题弄了我两天。好了不多

(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

推荐:C++基于TCP/IP简单的客户端、服务器通信程序实例

[本篇文章实现了一个基于TCP 的]

相关推荐