|
⚫ Q-11:HP-Socket 的 TCP 组件是否处理了粘包?
➢ A:三种选择:
1) PUSH 模型:应用程序手工处理粘包。
2) PULL 模型:与应用层协议配合,半自动处理粘包。
3) PACK 模型:通信组件自动处理粘包。
⚫ Q-12:HP-Socket 如何与第三方 Socket 应用通信?
➢ A:根据 HP-Socket 组件接收模型分别处理:
1) PUSH 模型:与应用层协议无关,可以直接通信。
2) PULL 模型:与对端协商应用层协议。
3) PACK 模型:对端需遵守 HP-Socket PACK 的数据包格式。
⚫ Q-13:多个线程同时发送数据时会不会造成发送方或接收方发送数据包乱序?
➢ A:不会。对于发送方,HP-Socket 会确保每个 Send() 方法调用所发出的数据都是
完整有序的,不会受其它 Send() 方法干扰;对于接收方,HP-Socket 对同一连接不
会同时触发多个 OnReceive 事件,因此,接收方的数据包也不会发生乱序。
⚫ Q-14:多个通信组件能共享同一个监听器对象吗?
➢ A:可以。监听器回调事件的 pSend 参数标识当前通信组件。
⚫ Q-15:HP-Socket 如何实现流量控制?
➢ A:可以通过数据接收和数据发送两个方面实现流量控制:
1) 数据接收:调用 PauseReceive() 方法暂停或恢复数据接收。
2) 数据接收:调用 GetPendingDataLength() 方法获取堆积的未发出数据量,
控制数据发送速度。
⚫ Q-16:对于小数据包、实时性要求高的 TCP 通信场景如何设置通信属性?
➢ A:通过 SP_DIRECT 发送策略配合 TCP_NODELAY Socket 选项设置:
1) 调用 SetSendPolicy(SP_DIRECT) 方法设置直接发送策略。
2) 调用 SetNoDelay(TRUE) 方法设置 TCP_NODELAY Socket 选项
|
|