HYP2P底层是用c语言实现的,这套p2p sdk中间件支持安卓,ios,windows平台。
在unity环境中要使用windows dll,或者安卓动态库so,ios lib库文件,首先需要根据sdk接口,生成一个C#类,导出需要使用到的接口函数。
先看HYP2P sdk的接口定义:
typedef void (*LOGFUN)(const char* str);
typedef void (*P2PCallback)(int session, int state );
typedef void (*P2PDataCallback)(int cmd, int subcmd, const void * pDataBuffer, int wDataSize);
//==================================================================
//用户app端和设备端都使用的api
//==================================================================
//login_domain - p2p服务器的域名或ip
//login_port - p2p服务器的端口号
//logfile - 本地日志文件的路径,utf8编码
P2PAPI_API int p2p_engine_init(const char* login_domain,int login_port, const char* logfile);
//p2p可选项定义:
#define P2P_OPTION_SINGLE_THREAD 0X0001 //单线程模式
//当前只有 P2P_OPTION_SINGLE_THREAD 一个选项,不推荐使用
P2PAPI_API void p2p_set_option(int opt);
P2PAPI_API void p2p_engine_destroy( );
//不推荐使用: 单线程模式下才需要在主循环中调用此函数
P2PAPI_API void p2p_engine_update( );
P2PAPI_API void setP2PLogCallback(LOGFUN f);
P2PAPI_API void setP2PCallBack(int nType, P2PCallback fn);
P2PAPI_API void setP2PDataCallback(int nType, P2PDataCallback fn);
// ipType=0 IPv4 or IPV6
// ipType=1 IPv4
// ipType=2 IPv6
P2PAPI_API int p2p_get_localip(char* ip, int buflen);
P2PAPI_API void p2p_set_localip(char* ip);
// level取值0-3,越大日志越详细
P2PAPI_API void p2p_set_log_level(int level);
P2PAPI_API int p2p_get_free_session();
P2PAPI_API int p2p_create_session(int session);
P2PAPI_API void p2p_close_session(int session);
#ifdef __cplusplus
P2PAPI_API void p2p_set_sink(int session, IP2PSessionSink* sink);
#