网站首次备案 多久,自己做网站怎么别人怎么浏览,做任务赚取佣金网站,企业vi设计公司报价目录 1.larV0.7-hook流程的说明
2.larV0.7-TCP_server集成链接HOOK函数
3.larV0.7-TCP_client集成链接HOOK注册功能 1.larV0.7-hook流程的说明
### 7.1 数据库表相关查询方法实现 我们先实现一些基本的数据表达查询方法#xff1a; lars_dns/src/dns_rout…目录 1.larV0.7-hook流程的说明
2.larV0.7-TCP_server集成链接HOOK函数
3.larV0.7-TCP_client集成链接HOOK注册功能 1.larV0.7-hook流程的说明
### 7.1 数据库表相关查询方法实现 我们先实现一些基本的数据表达查询方法 lars_dns/src/dns_route.cpp c /* * return 0, 表示 加载成功version没有改变 * 1, 表示 加载成功version有改变 * -1 表示 加载失败 * */ int Route::load_version() { //这里面只会有一条数据 snprintf(_sql, 1000, SELECT version from RouteVersion WHERE id 1;); int ret mysql_real_query(_db_conn, _sql, strlen(_sql)); if (ret) { fprintf(stderr, load version error: %s\n, mysql_error(_db_conn)); return -1; } MYSQL_RES *result mysql_store_result(_db_conn); if (!result) { fprintf(stderr, mysql store result: %s\n, mysql_error(_db_conn)); return -1; } long line_num mysql_num_rows(result); if (line_num 0) { fprintf(stderr, No version in table RouteVersion: %s\n, mysql_error(_db_conn)); return -1; } MYSQL_ROW row mysql_fetch_row(result); //得到version long new_version atol(row[0]); if (new_version this-_version) { //加载成功但是没有修改 return 0; } this-_version new_version; printf(now route version is %ld\n, this-_version); mysql_free_result(result); return 1; } 2.larV0.7-TCP_server集成链接HOOK函数
//加载RouteData到_temp_pointer int Route::load_route_data() { _temp_pointer-clear(); snprintf(_sql, 100, SELECT * FROM RouteData;); int ret mysql_real_query(_db_conn, _sql, strlen(_sql)); if (ret) { fprintf(stderr, load version error: %s\n, mysql_error(_db_conn)); return -1; } MYSQL_RES *result mysql_store_result(_db_conn); if (!result) { fprintf(stderr, mysql store result: %s\n, mysql_error(_db_conn)); return -1; } long line_num mysql_num_rows(result); MYSQL_ROW row; for (long i 0;i line_num; i) { row mysql_fetch_row(result); int modid atoi(row[1]); int cmdid atoi(row[2]); unsigned ip atoi(row[3]); int port atoi(row[4]); uint64_t key ((uint64_t)modid 32) cmdid; uint64_t value ((uint64_t)ip 32) port; (*_temp_pointer)[key].insert(value); } printf(load data to tmep succ! size is %lu\n, _temp_pointer-size()); mysql_free_result(result); return 0; } 3.larV0.7-TCP_client集成链接HOOK注册功能
//将temp_pointer的数据更新到data_pointer void Route::swap() { pthread_rwlock_wrlock(_map_lock); route_map *temp _data_pointer; _data_pointer _temp_pointer; _temp_pointer temp; pthread_rwlock_unlock(_map_lock); } //加载RouteChange得到修改的modid/cmdid //将结果放在vector中 void Route::load_changes(std::vectoruint64_t change_list) { //读取当前版本之前的全部修改 snprintf(_sql, 1000, SELECT modid,cmdid FROM RouteChange WHERE version %ld;, _version); int ret mysql_real_query(_db_conn, _sql, strlen(_sql)); if (ret) { fprintf(stderr, mysql_real_query: %s\n, mysql_error(_db_conn)); return ; } MYSQL_RES *result mysql_store_result(_db_conn); if (!result) { fprintf(stderr, mysql_store_result %s\n, mysql_error(_db_conn)); return ; } long lineNum mysql_num_rows(result); if (lineNum 0) { fprintf(stderr, No version in table ChangeLog: %s\n, mysql_error(_db_conn)); return ; } MYSQL_ROW row; for (long i 0;i lineNum; i) { row mysql_fetch_row(result); int modid atoi(row[0]); int cmdid atoi(row[1]); uint64_t key (((uint64_t)modid) 32) cmdid; change_list.push_back(key); } mysql_free_result(result); }