简单的网络编程接口创建步骤

MFC提供了两个类CAsyncSocket和CSocket来封装WinSocket API,这给程序员提供了一个更简单的网络编程接口。
CAsyncSocket在较低层次上封装了WinSocket API,默认情况下,使用该类创建的socket是非阻塞的socket,所有操作都会立即返回,如果没有得到结果,返回WSAEWOULDBLOCK,表示是一个阻塞操作。
CSocket建立在CAsyncSocket的基础上,是CAsyncSocket的派生类。也就是默认情况下使用该类的socket是非阻塞的socket,但是CSocket的网络I/O是阻塞的,它在完成任务之后才返回。CSocket的阻塞不是建立在“阻塞”socket的基础上,而是在“非阻塞”socket上实现的阻塞操作,在阻塞期间,CSocket实现了本线程的消息循环,因此,虽然是阻塞操作,但是并不影响消息循环,即用户仍然可以与程序交互。
CAsyncSocket封装了低层的WinSocket API,其成员变量m_hSocket保存其对应的socket句柄。使用CAsyncSocket的方法如下:
(1)在堆或者栈中构造一个CAsyncSocket对象,例如:
CAsyncSocket sock;
或者
CAsyncSocket *pSock = new CAsyncSocket;
(2)调用Create创建socket,例如使用默认参数创建一个面向连接的socket:
sock.Create()
指定参数创建一个使用数据报的socket,本地端口为30:
pSocket.Create(30, sock_DGRM);
(3)如果是客户程序,使用Connect连接到远地;如果是服务程序,使用Listen监听远地的连接请求。
(4)使用成员函数进行网络I/O。
(5)销毁CAsyncSocket,析构函数调用Close成员函数关闭socket。

相关推荐
相关主题
热门推荐