Previous topicNext topic
Help >
FAQ

此为API文档的一些常见问题和解释

1.问:注释和函数不对应

   答:我们的注释在某些扩展函数EX中,会忽略掉第一个句柄参数,所以部分注释要从函数的第二个参数开始读

        注释不一定会全部正确,一切以代码为准.

2.问:所有功能都进行了分类整理嘛

   答:不是所有功能都是单独的分类,比如线程就不是(因为功能区分很小),他有几种线程池,各类线程池是不能通用的

3.问:请求的IP版本参数是INT类型,不知道怎么传参

   答:IP版本类型我们采用系统默认的值,比如IPV4是AF_INET,IPV6是AF_INET6

4.问:文档里面的例子是最新的吗?

   答:不一定.代码示例应该按照版本库中的示例为标准

5.问:句柄返回有时候是XNETHANDLE,有时候是XHANDLE,他们有什么区别?

   答:XHANDLE一般有内部线程,内部线程一般属于非线程安全

        XNETHANDLE属于线程安全,XHANDLE不属于线程安全.

6.问:什么是三级指针什么是二级指针数据类型

   答:无论是三级指针还是二级指针,他们都是系统内部申请内存保存数据所处理的一种方法,使用了这种方式的函数参数,如果没有特别说明,都需要用户自己主动的调用内存释放

        XPPMEM:二级指针,使用BaseLib_OperatorMemory_FreeCStyle释放内存.

        XPPPMEM:三级指针,使用BaseLib_OperatorMemory_Free释放内存

7.问:在一些注释不明确的地方怎么确定函数调用顺序

   答:一般情况下,函数调用顺序是从上到下的.比如,在使用ssl安全套接字客户端的时候,我们的调用顺序如下所示,我们可以看到有两个函数是可选的,config是必须在初始化后调用,getkey同理

        一般情况下,设置函数大部分可能会有一个固定的调用顺序,之后之前不能调用,然而获取函数大部分情况下没有这个要求

        XClient_OPenSsl_InitEx 必选的函数初始化.

        XClient_OPenSsl_ConfigEx 函数可选配置算法加密库

        XClient_OPenSsl_ConnectEx 必须得函数链接到服务器

       XClient_OPenSsl_GetKeyEx 可选的函数获取服务器的密钥

       发送或者接受数据函数

       XClient_OPenSsl_CloseEx 必须得关闭函数

8.问:为什么只有TCPXCore的高性能客户端函数库,没有UDP高性能的客户端函数

   答:无论TCP还是UDP的XCore,内部都是使用IOCP,EPOLL,KEVENT实现,UDP的XCore可以直接使用XEngine_Core模块下的UDPXCore服务端函数实现客户端的功能.

9.问:UNICODE和ANSI版本字符串操作函数有什么区别,什么时候使用?

   答:我们目前使用的UTF8的代码集.一般情况下是支持多语言处理的,但是,UTF8毕竟不是标准UNICODE处理方法,在某些特殊字符或者语言下可能会处理失败,如果可以,我们建议你使用UNICODE版本的字符串处理函数.

        目前我们默认的函数式Ansi UTF8的.UNICODE的版本函数式W结尾,ANSI是A结尾的函数库

10.问:回调函数中可以调用与之相关的其他操作函数吗?比如关闭.

     答:不能,比如启动一个服务器,会注册回调函数,在close回调或者recv回调中都不能调用关闭客户端函数,是否需要关闭需要参考函数说明.大部分我们都会默认当客户端离开后者出错后自动清理资源.

          如果强行调用关闭函数,可能会造成死锁.我们也不推荐你在回调函数中使用其他相关操作函数.

11.问:线程池优先级和CPU亲和性设置是否有并要?

     答:我们虽然提供了接口,但是现代计算机系统对于CPU线程调度已经做了优化,一般情况下不需要自己在配置优先级了.除非你明确知道你在做什么.并且大多数系统都需要管理员权限才可以使用

          而且在移动端,比如IOS,线程优先级已经被禁用了.设置了也没有作用.