📄 d104.bmp.txt
字号:
的成员函数与CAsyncSocket相比要少得多,不难掌握。
首先介绍CSocket类的一些基本知识,属性函数如表3-8所示。
表3-8 CSocket的属性函数
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 属 性 ┃ 说 明 ┃
┣━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ IsBlocking ┃ 判断进程中是否是阻塞调用 ┃
┣━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ FromHandle ┃ 通过一个给定的Socket句柄返回一个CSocket对象指针 ┃
┣━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Attach ┃ 关联一个Socket句柄到一个CSocket对象 ┃
┗━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━┛
操作函数如表3-9所示。
表3-9 CSocket的操作函数
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 函 数 ┃ 说 明 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Accept ┃ 接收连接请求 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ AsyncSelect ┃ 为Socket请求接收异步消息 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Bind ┃ 把本地地址关联到Socket上 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Close ┃ 关闭当前Socket ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Connect ┃ 与对方Socket进行连接 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ IOCtl ┃ 控制Socket模式 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Listen ┃ 监听连接请求 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Receive ┃ 从Socket接收数据 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ ReceiveFrom ┃ 接收一个数据并存储源地址 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ Send ┃ 发送数据到连接的接口 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ SendTo ┃ 发送数据到具体的目标地址 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃ ShutDown ┃ 使Send和/或Receive调用无效 ┃
┣━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫
┃CancelBlockingCall ┃ 取消正在进行的阻塞调用 ┃
┗━━━━━━━━━━┻━━━━━━━━━━━━━━━━┛
可重载的消息响应函数如表3-10所示。
表3-10 CSocket的可重载的消息响应函数
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 消 息 ┃ 说 阴 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OnAccept ┃ 通知监听的Socket它可以通过调用Accept函数接收连接请求 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OnClose ┃ 通知Socket,与它相连接的Socket已经关闭 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OnConnect ┃ 通知一个正在连接的Socket,连接尝试已经完成,或者成功或者失败 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃OnOutOfBandData ┃ 通知一个正在接收数据的Socket,有紧急数据到达 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OnReceive ┃ 通知Socket有数据到达,可以调用Receive函数去接收数据 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OnSend ┃ 通知Socket可以调用Send发送数据 ┃
┣━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃OnMessagePending ┃ 让系统等待阻塞调用完成之后发送一个消息 ┃
┗━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
请读者注意,CSocket的操作函数与可重载的消息响应函数相比,分别只多了一个
CanceIBlockingCall()函数和OnMessagePending0函数。
2.CSocket编程流程
下面介绍使用CSocket对象进行客户服务器之间通信的一般编程模型。与调用
104
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -