EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

原型设置IP和端口

场景介绍

向客户端的通信引擎库传入IP和端口。

前提条件

客户已经实现了通信引擎库(示例工程为libCommunication.so动态库),并提供对外的设置IP和端口的函数。

开发流程

  1. 实现Jni初始化通信库的设置IP和端口的函数。
  2. 调用Jni设置通信库的IP和端口。

编码实例

// JAVA调用
public class Activity implements BaseActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
        if (!NetConfig.initialize()) {
           // 通信库初始化失败,退出activity
        }
        // 第三个参数为通信协议类型, 0是tcp
        if (!NetConfig.setNetConfig(proxyIp, proxyPort, 0)) {
             //  通信库设置IP或者端口    
        }
     } 
}
 
// Jni实现
JNIEXPORT jboolean JNICALL NET_CONFIG_JNI(initialize)(JNIEnv* env, jclass cls)
{
    (void) env;
    (void) cls;
    if (g_handle != nullptr) {
        return true;
    }
    // 加载通信的动态库
    g_handle = dlopen(LIB_COMM_NAME.c_str(), RTLD_GLOBAL | RTLD_LAZY);
    if (g_handle == nullptr) {
        ERR("error: Failed to open shared library:%s", LIB_COMM_NAME.c_str());
        return false;
    }
     // 寻找到ConfigNetAddress设置IP和端口的函数
    const std::string CONFIG_NET_ADDRESS_FUNC = "ConfigNetAddress";
    g_configNetAddressFunc = reinterpret_cast<ConfigNetAddressFunc>(
        dlsym(g_handle, CONFIG_NET_ADDRESS_FUNC.c_str()));
    if (g_configNetAddressFunc == nullptr) {
        dlclose(g_handle);
        return false;
    }
    return true;
}
 
JNIEXPORT jboolean JNICALL NET_CONFIG_JNI(setNetConfig)(JNIEnv* env, jclass cls, jstring ip, jint port, jint type)
{
    (void) cls;
    (void) env;
    if (g_configNetAddressFunc == nullptr) {
        ERR("setNetConfig failed, g_configNetAddressFunc is nullptr");
        return false;
    }
    // 设置IP和端口
    g_configNetAddressFunc(GetIpHostOrder(Jstring2String(env, ip)), port, type);
    return true;
}
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词