You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
C
初始化客户端(C SDK)
复制全文
下载 pdf
初始化客户端(C SDK)
TosClient 提供了一系列接口用与 TOS 服务进行交互,以管理存储桶和对象等 TOS 服务上的资源。可通过 AccessKey/SecretKey、STS (Security Token Service)等方式初始化 TosClient。在初始化时,您可设置建立连接超时时间、最大空闲连接数量等可选参数。本文介绍如何初始化 TOS C SDK。​
前提条件​
配置长期访问凭证​
初始化 SDK 前,您需要先配置长期访问凭证。本章节介绍不同操作系统下配置长期访问凭证的操作步骤。​
说明​
暂不支持在 Windows 系统中使用 C SDK。​
​
macOS
Linux
​
  1. 打开终端并执行以下命令打开文件。​
​
nano ~/.bash_profile​
​
  1. 在文件末尾添加 AKSK 信息。​
​
export TOS_ACCESS_KEY=AKTPYmI1Z****​
export TOS_SECRET_KEY=T1dJM01UU****​
​
  1. 保存文件并退出。​
  1. 执行以下命令生效配置信息。​
​
source ~/.bash_profile​
​
  1. 执行以下命令验证配置信息。​
​
echo $TOS_ACCESS_KEY​
echo $TOS_SECRET_KEY​
​
如果配置成功,则返回如下示例:​
​
AKTPYmI1Z****​
T1dJM01UU****​
​
​
​
创建 TosClient​
使用必选参数初始化​
以下代码展示如何使用 TOS 域名等必选参数初始化 TosClient,包括 AK、SK、Endpoint 和 Region。​
说明​
  • Endpoint 为 TOS 对外服务的访问域名。TOS 支持的 Endpoint 信息,请参见访问域名 Endpoint。​
​
char* ak = getenv("TOS_ACCESS_KEY");​
char* sk = getenv("TOS_SECRET_KEY");​
​
void init_client_demo()​
{​
/* 等价于 apr_pool_t,用于内存管理的内存池,实现代码在 apr 库中 */​
tos_pool_t *pool;​
tos_client_t *client;​
​
/* 重新创建一个新的内存池,第二个参数是 NULL,表示没有继承自其它内存池 */​
tos_pool_create(&pool, NULL);​
​
/* 创建并初始化 client,这个参数内部主要包括 endpoint,access_key_id,acces_key_secret, curl 参数等全局配置信息​
* client 的内存是由 pool 分配的,后续释放掉 pool 后,client 的内存也相当于释放掉了,不再需要单独释放内存​
*/​
client = tos_client_create(pool);​
client->config = tos_config_create(client->pool);​
​
/* tos_str_set 是用 char* 类型的字符串初始化 tos_string_t 类型 */​
/* endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS */​
tos_str_set(&client->config->endpoint, "*** Provide your endpoint ***");​
tos_str_set(&client->config->region, "*** Provide your region ***");​
tos_str_set(&client->config->access_key_id, ak);​
tos_str_set(&client->config->access_key_secret, sk);​
​
tos_pool_destroy(pool);​
}​
​
使用可选参数初始化​
TOS C SDK 提供了多个可选参数来自定义配置 TosClient。以下代码展示如何自定义配置 TosClient 的 建立连接超时时间和读写超时时间。​
​
char* ak = getenv("TOS_ACCESS_KEY");​
char* sk = getenv("TOS_SECRET_KEY");​
​
void init_client_demo()​
{​
/* 等价于 apr_pool_t,用于内存管理的内存池,实现代码在 apr 库中 */​
tos_pool_t *pool;​
tos_client_t *client;​
​
/* 重新创建一个新的内存池,第二个参数是 NULL,表示没有继承自其它内存池 */​
tos_pool_create(&pool, NULL);​
​
/* 创建并初始化 client,这个参数内部主要包括 endpoint,access_key_id,acces_key_secret, curl 参数等全局配置信息​
* client 的内存是由 pool 分配的,后续释放掉 pool 后,client 的内存也相当于释放掉了,不再需要单独释放内存​
*/​
client = tos_client_create(pool);​
client->config = tos_config_create(client->pool);​
​
/* tos_str_set 是用 char* 类型的字符串初始化 tos_string_t 类型 */​
/* endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS */​
tos_str_set(&client->config->endpoint, "*** Provide your endpoint ***");​
tos_str_set(&client->config->region, "*** Provide your region ***");​
tos_str_set(&client->config->access_key_id, ak);​
tos_str_set(&client->config->access_key_secret, sk);​
​
/* 示例中通过 connect_timeout 设置建立连接超时时间(单位为秒)​
* 通过 socket_timeout 设置一次读写连接超时时间(单位为秒)​
*/​
client->ctl->options->connect_timeout = 5; ​
client->ctl->options->socket_timeout = 60; ​
tos_pool_destroy(pool);​
}​
​
常见配置场景​
配置超时机制​
在 SDK 中可以通过可选参数调整超时时间,可以通过下列函数对超时参数进行配置:​
  • connect_timeout:设置连接超时,表示在建立连接阶段最长等待时间,单位秒,默认值为 10,即 10 秒。​
  • socket_timeout:设置读写网络流的超时,表示一次 Read/Write 最长等待时间,单位秒,默认值为 120,即 120 秒。​
以下代码展示如何设置 SDK 的超时时间。​
​
char* ak = getenv("TOS_ACCESS_KEY");​
char* sk = getenv("TOS_SECRET_KEY");​
​
void init_client_demo()​
{​
/* 等价于 apr_pool_t,用于内存管理的内存池,实现代码在 apr 库中 */​
tos_pool_t *pool;​
tos_client_t *client;​
​
/* 重新创建一个新的内存池,第二个参数是 NULL,表示没有继承自其它内存池 */​
tos_pool_create(&pool, NULL);​
​
/* 创建并初始化 client,这个参数内部主要包括 endpoint,access_key_id,acces_key_secret, curl 参数等全局配置信息​
* client 的内存是由 pool 分配的,后续释放掉 pool 后,client 的内存也相当于释放掉了,不再需要单独释放内存​
*/​
client = tos_client_create(pool);​
client->config = tos_config_create(client->pool);​
​
/* tos_str_set 是用 char* 类型的字符串初始化 tos_string_t 类型 */​
/* endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS */​
tos_str_set(&client->config->endpoint, "*** Provide your endpoint ***");​
tos_str_set(&client->config->region, "*** Provide your region ***");​
tos_str_set(&client->config->access_key_id, ak);​
tos_str_set(&client->config->access_key_secret, sk);​
​
/* 示例中通过 connect_timeout 设置建立连接超时时间(单位为秒)​
* 通过 socket_timeout 设置一次读写连接超时时间(单位为秒)​
*/​
client->ctl->options->connect_timeout = 5; ​
client->ctl->options->socket_timeout = 60; ​
tos_pool_destroy(pool);​
}​
​
初始化参数列表​
​
参数名​
参数类型​
是否必选​
示例值​
说明​
access_key_id​
String​
必选​
AKTPYmI1ZGQwMDA0NjlhNGFkMzhjNzM0N2Q0OTQ3ZTV****​
Access Key ID ,即密钥 ID。​
access_key_secret​
String​
必选​
T1dJM01UUXpOak0wTVdWak5E0poWldJNU1HWmxaV1V5TkdReVl6****​
SecretAccess Key,即私有访问密钥。​
endpoint​
String​
可选,为空时由 Region 参数决定​
tos-cn-beijing.volces.com​
TOS 服务端访问域名。​
region​
String​
可选,Endpoint 为空时必选​
cn-beijing​
TOS 服务端所在地域。​
sts_token​
String​
可选​
STSeyJBY2NvdW50SWQiOjIxMDAwMDUyMjQsIklkZW50aXR5VHlwZSI6NCwiSWRlbnRpdHlJZCI6MTE3MjI5NiwiQ2hhbm5lbCI6IlVzZXIiLCJBY2Nlc3NLZXlJZCI6IkFLVFBZbUkxWkdRd01mxoTkdGa016aGpOek0wTjJRME9UUTNaVFZqTXpFIiwiU2l****​
临时访问凭证中的安全令牌。​
socket_timeout​
Int​
可选​
120​
Socket 读写超时时间,单位毫秒,默认值为 30000ms,即 30s。​
connect_timeout​
Int​
可选​
10​
设置建立连接超时时间,单位毫秒,默认值为 10000ms,即 10s。​
​
​
最近更新时间:2026.07.06 10:40:38
这个页面对您有帮助吗?
有用
有用
无用
无用