阿里云HTTPDNS 是面向多端应用(移动端APP、PC客户端应用、嵌入式应用等)具有防劫持、精准调度、实时解析生效等特性的域名解析服务。阿里云EMAS团队提供了C SDK, 以降低开发者通过C/C++语言接入HTTPDNS的门槛,用户可以通过调用相关API方便地使用HTTPDNS进行域名解析。
目前仅适配了Linux、macOS、Windows,暂不支持Android、IOS、RTOS等平台。
- 当前版本:2.2.4
构建过程中需要使用git克隆代码、使用cmake构建工程(版本3.0及以上)、使用gcc(版本4.5及以上) /g++编译代码,请您确认这些命令行工具已经在安装本机,如果尚未安装参考以下安装命令:
- Ubuntu/Debian:
sudo apt update
sudo apt install -y git cmake gcc g++
- Aliyun/CentOS Stream/Fedora:
sudo yum check-update
sudo yum install -y git cmake gcc gcc-c++
- OpenSUSE:
sudo zypper refresh
sudo zypper install -y git cmake gcc gcc-c++
- macOS
export HOMEBREW_NO_AUTO_UPDATE=1
brew install git gcc cmake
- Windows
下载安装Git、下载安装Visual Studio ( 工作负载选择“使用C++的桌面开发”)
SDK使用curl库(版本7.33.0及以上)进行网络操作,使用apr/apr-util(版本1.5.2及以上)库解决内存管理以及跨平台问题,使用cjson库解析服务端响应报文, SDK并没有带上这几个外部库,您需要确认这些库已经安装,并且将它们的头文件目录和库文件目录都加入到了项目中。 本项目支持VCPKG安装和手动安装两种方式安装这些C/C++库。
- 安装VCPG
- 安装SDK依赖的库
- macOS/Linux: ./vcpkg install apr apr-util curl[openssl,http2] cjson
- Windows: .\vcpkg.exe install apr apr-util curl[openssl,http2] cjson
- Ubuntu/Debian:
sudo apt update
sudo apt install -y libcurl4-openssl-dev libapr1-dev libaprutil1-dev libcjson-dev
- Aliyun/CentOS Stream/Fedora:
sudo yum check-update
sudo yum install -y libcurl-devel apr-devel apr-util-devel cjson-devel
- OpenSUSE:
sudo zypper refresh
sudo zypper install -y libcurl-devel libapr1-devel libapr-util1-devel cJSON-devel
- macOS
brew install curl apr apr-util cjson
- Windows(源码安装)
下载安装cjson、 下载安装curl、 下载安装apr/apr-util
注意:如果cJSON开发包不能通过Unix-like平台包管理器自动安装,可以通过以下命令手动安装:git clone https://github.com/DaveGamble/cJSON.git && cd cJSON && mkdir build && cd build && cmake ../ && sudo make install && cd ../../ && rm -rf cJSON
- macOS/Linux:
git clone https://github.com/aliyun/alibabacloud-httpdns-c-sdk.git
cd alibabacloud-httpdns-c-sdk
mkdir build
cd build
# 如果是通过VCPKG安装的依赖库,则构建SDK时需要添加Cmake参数 -DVCPKG_ROOT=${vcpkg的安装路径}
cmake -DCMAKE_BUILD_TYPE=Release ../
make hdns_unite_test
sudo make install
sudo ldconfig
- Windows:
- 下载工程
- Visual Studio打开Cmake工程
- 管理配置中配置Cmake命令参数:-DVCPKG_ROOT=${vcpkg的安装路径}
安装SDK之后,可以通过静态库或者静态库的方式使用SDK的API(位于文件hdns_api.h),具体使用方式可以参考代码examples的示例。
注意:
- 可以通过打开主工程CMakeLists.txt中的ADD_LOG_USE_COLOR开关来实现按日志等级彩色打印内容
- 可以通过设置主工程CMakeLists.txt中的HTTPDNS_REGION选择HTTPDNS服务集群
- MIT
- 阿里云HTTPDNS官方文档中心
- 阿里云官方技术支持:提交工单
- 阿里云EMAS开发交流钉钉群:35248489
本项目的内存管理和HTTP层封装从阿里云OSS C SDK中受到了很大的启发,特此感谢。