CSocket类是对CAsyncSocket 的继承,因此它也封装了Windows API函数。相对于CAsyncSocket 类,CSocket 是对windows socket API的更高级别的抽象化(心得:换言之,更容易使用,但难以进行如CAsyncSocket 般精准的通讯控制)。CSocket 类和CSocketFile 、CArchive 类一同应用,实现数据的发送和接收。
CAsyncSocket是只支持非阻塞模式的,而CSocket类只是支持阻塞模式。同时,与CAsyncSocket类不同的是,CSocket是与CArchive类和CArchiveFile类一起完成数据的发送和接受操作。
CSocket类由CArchive类提供其必须的阻塞。其操作函数send,sendto,accept,listen,connect,accept from并不向CSocket发送WASEWOULDBLOCK错误,而是等待操作结束。如果在这些函数操作过程中,(控制线程)调用了CANCLEBLOCKCAL则,他们会向CSocket类发送WASEWOULDBLOCK错误,即CANCLEBLOCKCAL会阻断WASEWOULDBLOCK的阻塞。
CSocket 对象的使用方法:
1、调用CSocket 类的构造函数。
2、调用CSocket 对象的create 函数创建windwos的SOCKET 句柄(默认为面向流的socket,即tcp,可特别指定创建udp的socket)。如果你并和CArchive 对象一起使用,你可以通过指定参数,将socket绑定到固定的端口,创建服务器端得socket。
3、在客户端,调用CSocket 对象的Connect 函数连接服务器,而在服务器端,使用Accept 接受连接。
4、通过将CSocket 对象作为CSocketFile对象的构建函数的输入参数,创建CSocketFile对象的同时,为CSocket 对象与CSocketFile对象建立连接。
5、而通过将CSocketFile对象作为CArchive对象的构建函数的输入参数,可建立CSocketFile对象和CArchive对象之间的联系。
6、完成通讯后,撤销(destroy)CArchive, CSocketFile和CSocket对象。