这几天都在研么MFC的套接字类CAsyncSocket的用法, 将一些心得和实践中遇到的问题总结一下。
一、 一些网络的基本概念
1. 同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
2. 异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
3. 阻塞:指调用某函数时,直到该函数完成操作,才返回;否则一直阻塞在该调用上
4. 非阻塞:指调用某操作时,不管操作是否成功都立即返回,而不会挂在该操作上
CAsyncSocket属于异步非阻塞类;
CSocket是MFC在CAsyncSocket基础上派生的一个同步阻塞Socket的封装类
二、 CAsyncSocket的使用(伪码)
服务器端:
m_pListSocket
=
new
CAsyncSocket();
m_pListSocket
->
Create( 端口,地址);
//
创建
m_pListSocket
->
Listen();
//
开始监听

m_pListSocket::OnAccept( )
//
有客户端请求连接时响应
{

m_pSocket = new CAsyncSocket();
m_pListSocket-> Accept(m_pSocket); // 建立通信,成功后m_pSocket就用于发送和接受.

// m_pSocket 就相当于连接的那个客户端了
}


m_pSocket::OnRecive(
int
nErrorCode)
{

if( nErrorCode == 0)
{

Recevie(); // 接受客户端发送来的信息
}
CAsyncSocket::OnRecive( nErrorCode)
}


m_pSocket::OnSend()
{

Send(); // 发送信息,该事件触发条件见下节
}


m_pListSocket
->
Close();

delete m_pListSocket;
delete m_pSocket;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74222.html