ipfs c++client
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ipfs c++client相关的知识,希望对你有一定的参考价值。
ipfs
星际文件系统,大家都知道
代码下载在这里
c++ ipfs client
这个客户端是根据一个开源的client修改的,实际上依然是根据libcurl的http协议来保持节点的互通,也就是外层协议封装的是http,restful方式,而内层核心依然是ipfs的文件系统方式。
例如节点就建立在本机,ipfs::client client(“localhost”,5001) 建立基础客户端,如下代码所示
int main(int, char**) {
try {
ipfs::Client client("localhost", 5001);
/** [ipfs::Client::FilesGet] */
std::stringstream contents;
client.FilesGet(
//"Qmd7tVnUvsGVUcn6Hnv4Td6bmSfKq17bsQgfsDRy5BBVoX",
//"Qme4kQCUWinrYm29afMw1nodBNE3A3ykd85MuB9MJcDxcm",
"QmRdPPAPup1PxUoWbNP48dHKhm6B3ZSzR2Pn1AGCkeeGSz",
&contents, DownloadCallback,ProgressCallback);
//std::cout << contents.str().length();
//std::cout << "Retrieved contents: " << contents.str().length() <<std::endl; // contents.str().substr(0, 8) << "..."
}
catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
return 1;
}
Sleep(INFINITY);
return 0;
}
回调函数DownloadCallback,ProgressCallback 分别代表下载callback 和进度callback,如下所示
static size_t DownloadCallback(void* pBuffer, size_t nSize, size_t nMemByte, void* pParam)
{
//把下载到的数据以追加的方式写入文件(一定要有a,否则前面写入的内容就会被覆盖了)
FILE* fp = NULL;
fopen_s(&fp, "c:\\\\222.docx", "ab+");
size_t nWrite = fwrite(pBuffer, nSize, nMemByte, fp);
fclose(fp);
return nWrite;
}
static int ProgressCallback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
{
if (dltotal > -0.1 && dltotal < 0.1)
return 0;
int nPos = (int)((dlnow / dltotal) * 100);
std::cout << "now the process is:" << nPos << std::
endl;
//通知进度条更新下载进度
//::PostMessage(g_hDlgWnd, WM_USER + 110, nPos, 0);
//::Sleep(10);
return 0;
}
客户端冯转了文件增加和文件获取,如下所示
void FilesGet(
const std::string& path,
std::iostream* response,
//下载回调
DlCallback dlcallback = NULL,
//进度回调
PrCallback prcallback = NULL
);
void FilesAdd(
/** [in] List of files to add. */
const std::vector<http::FileUpload>& files,
/** [out] List of results, one per file. For example:
* [{"path": "foo.txt", "hash": "Qm...", "size": 123}, {"path": ...}, ...]
*/
Json* result);
封装的函数还是相当的可靠的,代码质量可以,json解析使用的是json.hpp。
以上是关于ipfs c++client的主要内容,如果未能解决你的问题,请参考以下文章
Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)(代码片段
IPFS未来发展前景:FIL打造共识共赢共享的全球生态圈!你参与了吗?