可以。自“AnyChat Platform Core SDK V2.8”版本开始,新增了P2P连接控制接口,之前的AnyChat SDK客户端优先P2P网络传输,其次是走服务器转发模式(P2P不通时),具体使用何种处理模式由SDK内部决定,上层应用无法干预,V2.8版本新增的数据流传输方式控制接口,可以实现由上层应用来控制客户端是P2P网络传输,还是服务器转发模式,以满足上层应用的特殊应用需求。
可以动态进行连接方式更改,向上层返回P2P连接状态(参考:P2P连接状态变化消息),并且可由上层查询与指定用户的P2P连接状态(参考:BRAC_QueryUserState)。
如果需要禁示本地用户的P2P(不主动与其它用户建立P2P连接,也不接收其它用户的P2P连接请求),典型的示例代码如下:
1.
// 将P2P策略设置为禁止模式
2.
DWORD
dwP2PPolitic = 0;
3.
BRAC_SetSDKOption(BRAC_SO_NETWOK_P2PPOLITIC,(
const
char
*)&dwP2PPolitic,
sizeof
(
DWORD
));
禁止本地用户的P2P连接之后,所有数据均由服务器转发。
SDK默认的P2P连接模式是“服务器控制模式”(该模式下优先P2P数据传输,P2P不通时走服务器转发),如要恢复为默认的P2P连接模式,典型的示例代码如下:
1.
// 将P2P策略设置为服务器控制模式
2.
DWORD
dwP2PPolitic = 1;
3.
BRAC_SetSDKOption(BRAC_SO_NETWOK_P2PPOLITIC,(
const
char
*)&dwP2PPolitic,
sizeof
(
DWORD
));
关于P2P连接策略更详细的信息可参考:如何设置AnyChat的P2P连接策略
应用程序是否能控制SDK的P2P连接?