本文说明如何使用类。CAsyncSocket 请注意此类封装 Windows 套接字 API 在很低。 CAsyncSocket 由详细知道网络通信的程序员使用,但需要回调使用网络事件通知的。 基于此假设,本文只提供的基本指令。 则可能应考虑使用 CAsyncSocket,则需要 Windows 套接字的方便处理在 MFC 应用程序的多个网络协议,但是不想为了牺牲灵活性。 还可能认为您可以比使用 CSocket类可以通过直接通信编程可以获得更佳的效率"更为一般性的备用模型。
CAsyncSocket记录在MFC Reference中。 Visual C++ 还提供 Windows 套接字规范,位于 Windows SDK。 详细信息留到您。 Visual C++ 不提供 CAsyncSocket的示例应用程序。
如果不指定熟知有关网络通信不需简单解决方案,使用 CArchive 对象的类。CSocket 参见 Windows 套接字:将存档的套接字。更多信息。
本文包含:
创建和使用 CAsyncSocket 对象。
与 CAsyncSocket 的职责。
创建和使用 CAsyncSocket 对象
使用 CAsyncSocket
构造对象并使用 CAsyncSocket 对象创建基础 SOCKET 句柄。
套接字创建执行两阶段 MFC 构造形式。
例如:
CAsyncSocket sock; sock.Create( ); // Use the default parameters
- 或 -
CAsyncSocket* pSocket = new CAsyncSocket; int nPort = 27; pSocket->Create( nPort, SOCK_DGRAM );
上面第一的构造函数在堆栈上创建 CAsyncSocket 对象。 第二个构造函数创建堆的 CAsyncSocket。 上面第一个 创建 调用使用默认参数创建流套接字。 第二个调用 创建 创建具有指定端口和地址的数据报套接字。(您可以使用任一构造方法的 创建 版本。)
对 创建 的参数为:
“端口”:短的整数。
对于服务器套接字,必须指定端口。 对于套接字,客户通常接受此参数的默认值,允许 Windows 套接字选择端口。
套接字类型:SOCK_STREAM (默认值) 或 SOCK_DGRAM。
套接字“Address”,如“”或 ftp.microsoft.com“128.56.22.8”。
这种网络上的 Internet 协议 (IP) 地址。 您可能总是将依赖于该参数的默认值。
术语“端口套接字”和“地址”。Windows 套接字:端口和套接字 Addresses解释。
如果套接字是客户,可以使用 CAsyncSocket::Connect,请连接服务器套接字的套接字。对象,
- 或 -
如果套接字是服务器,请设置套接字开始侦听 (带有 CAsyncSocket::Listen) 用于从客户端连接尝试。 在收到请求之后连接,请接受它与 CAsyncSocket::Accept。
在接受连接后,可以执行此任务。验证密码。
备注
接受 成员函数采用到新,空 CSocket 对象的引用作为参数。在调用 接受之前,您必须构建此对象。如果此套接字对象超出范围,将关闭这些连接。请勿调用套接此新的 Word 对象的 创建。有关示例,请参见的文章 Windows 套接字:操作的顺序。
通过调用封装 Windows 套接字 API 函数的 CAsyncSocket 对象的成员函数与其他套接字的通信。
参见 Windows 套接字规范和类" MFC 参考"中的CAsyncSocket。
销毁 CAsyncSocket 对象。
如果在堆栈上创建了套接字对象,其调用析构函数的函数,当包含超出范围。 使用 new 运算符,如果要创建在堆的套接字对象,就得销毁对象,使用 删除 运算符。
析构函数在销毁对象前调用对象的成员函数。关闭
有关此序列的代码示例 (实际上为 CSocket 对象),请参见 Windows 套接字:操作的顺序。
你的CAsyncSocket 的职责。
在 CAsyncSocket类创建对象时,对象封装 Windows SOCKET 句柄并提供该句柄的操作。 当您使用 CAsyncSocket时,必须处理可能面临,则直接使用 API 的所有问题。 例如:
“阻止”方案。
发送和接收的计算机之间的字节顺序差异。
转换在 Unicode 和多字节字符集 (MBCS) 字符串之间。
有关这些术语的定义和附加信息,请参见 Windows 套接字:阻止,Windows 套接字:字节顺序,Windows 套接字:转换字符串。
尽管这些问题,类 CAsycnSocket 可能为您正确的选择,如果应用程序要求所有的灵活性和控件可以获取。 否则,应考虑使用 CSocket 类。 CSocket 隐藏您从大量的详细信息:它正在发送 Windows 消息在调用期间锁定并可以访问 CArchive,管理字节顺序差异和字符串转换您的。
有关详细信息,请参阅: