# User RPC Reference: pcdn


# pcdn 全局描述

描述

pcdn 节点是 ppio 存储分发网络的 peer 端,随着启动命令可以加载不同的服务,比如,下载(download),做种(seed),点播服务(vod)等

"pcdn daemon start" 会启动一个 pcdn 用户节点
除了 "daemon start", "init", "help", "version" ,其他命令或者子命令都是通过RPC调用,访问或者控制该用户节点,故除非特别说明,它们都有相同的选项 rpchost 和 rpcport
"pcdn daemon start" 也有选项 "rpchost 和 rpcport",是用来临时覆盖默认配置文件中的RPC服务监听地址和端口
对于需要改变状态的操作,ppio账户钱包里必须要有一些token才能进行
启动 pcdn 节点之前,需要启动配套的服务结点,比如 tracker, mapping, coinpool

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

参数

参数 默认 描述
rpchost 127.0.0.1 RPC 服务地址
rpcport 18060 RPC 端口
session "" 设置session

返回

暂无错误码

例子

# 1. 启动用户节点,监听18061端口
> pcdn start --rpcport=18061
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}



# 2. 对已经启动的 pcdn 节点,进行一个RCP调用,连接18060端口
> pcdn config --rpcport=18060 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}



# 3. 
> pcdn config show --rpcport=18060
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}

# 4. 
> pcdn config show --rpcport=18060 --session 'I am session'
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}


# ReloadConfig

描述

重载服务器配置 并非所有重载都会对当前服务生效,目前只验证了MaxDownload(最大同时下载数),计划支持maxdownloadconn(最大下载连接数), maxuploadloadconn(最大上传连接数), maxUpload(最大同时上传数)

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":"[config string]"}' http://127.0.0.1:18060/rpc

参数

参数 类型 默认 描述 示例
config string json形式的配置字符串 {"Download":{"MaxDownloadConn": 30}}
save bool false 是否保存重载后的配置 true

返回

暂无错误码,成功返回 {"id":1,"jsonrpc":"2.0","result":null} 错误返回{"error":{"code":-1,"message":error string},"id":1,"jsonrpc":"2.0"}

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":["{\"Download\":{\"MaxDownloadConn\": 100}}",false]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":null}



# 2. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":["{\"Download\":{\"MaxDownloadCdfdonn\": 100},}",false]}' http://127.0.0.1:18060/rpc

{"error":{"code":-1,"message":"invalid character '}' looking for beginning of object key string"},"id":1,"jsonrpc":"2.0"}




# SetSession

描述

设置session,目前只针对cpool

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SetSession","params":"[session]"}' http://127.0.0.1:18060/rpc

参数

参数 类型 默认 描述
session string session

返回

暂无错误码,成功返回 {"id":1,"jsonrpc":"2.0","result":null}

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SetSession","params":["hello"]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":null}


# daemon

描述

管理用户节点服务

用法

方法 描述
StopDaemon 关闭节点服务
ReloadConfig 重载配置
SetSession 设置session

# StopDaemon

描述

关闭节点服务
pcdn daemon stop 和 pcdn stop 是相同的命令

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"StopDaemon"}' http://127.0.0.1:18060/rpc

参数

参数 默认 描述
datadir 用户主目录下的.ppio子目录 用户节点的数据目录
config 数据目录下的ppio.conf文件 指定配置文件

返回

暂无返回值

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"StopDaemon","params":null}' http://127.0.0.1:18060/rpc


# download

描述

下载服务

用法

方法 描述
DownloadFile 添加下载任务
PauseTask 暂停下载任务
ResumeTask 恢复暂停的下载任务
DeleteTask 删除下载任务
GetTaskStatus 查询任务状态
ListTasks 列出所有下载任务

# DownloadFile

描述

新建新的下载任务,如果任务创建成功,则返回该任务的 task-id。

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

参数

参数 类型 默认 描述 示例
url string 指定下载 URL "https://www.sina.com.cn/index.html"
rid string 指定下载rid "cvqwlmreojgorkf"
file string 指定下载文件保存路径 "/home/user/download/test.txt"
seeds list 指定连接peer地址列表 ["127.0.0.1:1080", "127.0.0.1:1081"]
http head list http首部列表 ["date: Sun, 02 Jun 2019 14:29:56 GMT", "expires: Sun, 02 Jun 2019 14:29:56 GMT"]
cookie string http cookie "expires=Sat, 31-Aug-2019 14:29:56 GMT; path=/; "

返回 暂无错误码 成功返回{"id":1,"jsonrpc":"2.0","result":taskID} 错误返回{"error":{"code":-1,"message":error string},"id":1,"jsonrpc":"2.0"}

例子

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":["https://dldir1.qq.com/qqfile/qq/PCQQ9.1.2/25096/QQ9.1.2.25096.exe","","/home/yates/go/src/github.com/PPIO/go-ppio/test6",null,"",""]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"23a897eb540a4109a5480b1c81d2a86d"}



> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":["https://dldir1.qq.com/qqfile/qq/PCQQ9.1.2/25096/QQ9.1.2.25096.exe","","/home/yates/go/src/github.com/PPIO/go-ppio/test6",null,"",""]}' http://127.0.0.1:18060/rpc


{"error":{"code":-1,"message":"file already exists"},"id":1,"jsonrpc":"2.0"}


# PauseTask

描述

暂停下载任务

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"PauseTask","params":taskid}' http://127.0.0.1:18060/rpc

参数

参数 描述
task-id 任务 id

返回 暂无错误码

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"PauseTask","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc

成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}


# ResumeTask

描述

恢复暂停的下载任务

用法

>curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ResumeTask","params":[taskid]}' http://127.0.0.1:18060/rpc

参数

参数 描述
task-id 任务 id

返回

暂无错误码

例子

# 1. 
> ./pcdn download resume 98b41d2193d54abca21a739e96d51cc6
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ResumeTask","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc

成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}



# DeleteTask

描述

删除下载任务

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":"[taskid,remove]"}' http://127.0.0.1:18060/rpc

参数

参数 描述
task-id 任务 id
remove 是否删除文件

返回

暂无错误码

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":["ab0673f25c9a4da08c6c102f60cd457e", false]}' http://127.0.0.1:18060/rpc

成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":["0350533b3cf84c39934b731732a7ca6a",true]}' http://127.0.0.1:18060/rpc

成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"308105: task not found"},"id":1,"jsonrpc":"2.0"}


# GetTaskStatus

描述

查询下载任务状态

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetTaskStatus","params":"[taskid]"}' http://127.0.0.1:18060/rpc

参数

参数 描述
task-id 任务 id

返回

暂无错误码

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetTaskStatus","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc

成功:{"id":1,"jsonrpc":"2.0","result":"{"Status":1,"FileSize":80674680,"Progress":0,"DownloadSize":28246016,"UploadSize":0,"HTTPDownloadSize":28246016,"P2PDownloadSize":0,"DownloadSpeed":717619,"AverageDownloadSpeed":760628,"UploadSpeed":0,"AverageUploadSpeed":0,"TrackerStatus":1,"LastMapingSucc":0,"LastMapingFail":3839258293,"PeerCount":0,"ConnectionCount":0,"Error":""}"}


成功:{"id":1,"jsonrpc":"2.0","result":{"Status":5,"FileSize":0,"Path":"/home/yates/go/src/github.com/PPIO/go-ppio/asedsd","Progress":0,"DownloadSize":0,"UploadSize":0,"HTTPDownloadSize":0,"P2PDownloadSize":0,"DownloadSpeed":0,"AverageDownloadSpeed":1,"UploadSpeed":0,"AverageUploadSpeed":0,"RemainTime":0,"TrackerStatus":0,"LastMapingSucc":0,"LastMapingFail":0,"PeerCount":0,"ConnectionCount":0,"Error":"201 , timeout, too long no data download\n"}}

失败: {"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}

status: 1 初始状态,2 运行中, 3 停止, 4 完成, 5 错误


# ListTasks

描述

列出所有下载任务

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListTasks","params":"[taskStatus, taskType]"}' http://127.0.0.1:18060/rpc

参数

参数 类型 描述 示例
status int 任务状态 0
type int 任务类型 1

status:0 init, 1 running, 2 stop, 3 finish, 4 error, 5 all 0 all, 1 init, 2 running, 3 stop, 4 finish, 5 error

type:0 download task, 1 all 0 all, 1 download task

返回

暂无错误码

例子


> ./pcdn download list
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListTasks","params":[5, 0]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"{"ID":"23a897eb540a4109a5480b1c81d2a86d","Name":"index.html","Speed":0,"Percent":95.696465}"}


{"id":1,"jsonrpc":"2.0","result":[{"ID":"0350533b3cf84c39934b731732a7ca6a","Name":"asedsd","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0},{"ID":"c015ea1105d04510b8f52c7c52f7249c","Name":"ased","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0},{"ID":"","Name":"","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0}]}


# seed

描述

做种服务

用法

方法 描述
SeedFile 做种
QuerySeed 查询rid
ListSeeds 列出所有做种成功的文件
CancelSeedFile 停止分享文件

# SeedFile

描述

做种,返回任务ID

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SeedFile","params":"[filepath]"}' http://127.0.0.1:18060/rpc

参数

参数 描述
file 文件

返回

暂无错误码

例子

# 1. 做种一个文件
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SeedFile","params":["Makefile"]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"4e848b08ba4443e2b6df958a5216f2e4"}


# QuerySeed

描述

查询rid

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QuerySeed","params":"[seed-id]"}' http://127.0.0.1:18060/rpc

参数

参数 描述
taskid 任务ID

返回

暂无错误码

例子

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QuerySeed","params":["4e848b08ba4443e2b6df958a5216f2e4"]}' http://127.0.0.1:18060/rpc

未完成: {"id":1,"jsonrpc":"2.0","result":""}
成功: {"id":1,"jsonrpc":"2.0","result":"sheN5h7aE5HmSS8H4zQeVinkWUjWACGi1mn1dVy3zT4oWwaLNLjkctSPdXNGVD"}
错误: {"error":{"code":-1,"message":"alread has the same rid bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE"},"id":1,"jsonrpc":"2.0"}


# ListSeeds

描述

列出所有做种成功的文件

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListSeeds"}' http://127.0.0.1:18060/rpc

返回

暂无错误码

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListSeeds"}' http://127.0.0.1:18060/rpc


~~{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "[{\"err\":\"0 , stat /home/yates/go/src/github.com/PPIO/go-ppio/Makefile1: no such file or directory\\n\",\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile1\",\"id\":\"6f3ee081dd094700852d9587f3e1f87b\",\"status\":2},{\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile\",\"id\":\"148b4907280b4da6a52f18d2381419dd\",\"rid\":\"bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE\",\"status\":1},{\"err\":\"0 , alread has the same rid bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE\\n\",\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile\",\"id\":\"dbd880d5b24043ff8282e4d7a2804524\",\"status\":2}]"
}~~


{"id":1,"jsonrpc":"2.0","result":[{"ID":"41097b074cef4b26a4d25e63e5acd53f","RID":"CVEuLabrkdHhHf1ub4FRVAUwdUMAxk8iMALWZrfRcFGPxDqtYqBa99oHCtjs1","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":1,"Error":""},{"ID":"a8761de0664e4a10a76b44db06bc31f8","RID":"","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":2,"Error":""},{"ID":"aa45106ad47c423b903c13eb224000bd","RID":"CVEuLabrkdCFfpSyYwiuCvg56htrJQiP1tuSYFhGNyMmFPHDULzao4Y7fCxV7","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test100M","Status":1,"Error":""},{"ID":"3fdf15b8000a4d4796d0eb268410ca63","RID":"","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":0,"Error":""}]}

status: 0 正在做种; 1 做种成功; 2 错误


# CancelSeedFile

描述

停止分享文件

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"CancelSeedFile","params":"[rid]"}' http://127.0.0.1:18060/rpc

参数

参数 描述
seed id seed rid

返回

暂无错误吗

例子

# 1. 
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"CancelSeedFile","params":["6f3ee081dd094700852d9587f3e1f87b"]}' http://127.0.0.1:18060/rpc

成功: {"id":1,"jsonrpc":"2.0","result":null}
错误: {"error":{"code":-1,"message":"no resource rid:"},"id":1,"jsonrpc":"2.0"}

#

描述

管理用户网络

用法

方法 描述
`` 查看通信 id
`` 查看 indexer 和 verifier 服务器

#

描述

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

例子

# 1. 查看通信 id
> ppio net id
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"002508021221036e583cb64b75cb6fd7d8ea6f8f952c65813177fa4d69f05a881b57963a4538b5"}




#

描述

查看 indexer 和 verifier 服务器

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

返回

错误码 错误消息 描述
303000 Succeed 命令执行成功
303001 Failed 命令执行失败

例子

# 1. 
> ppio net servers
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"Indexers count: 1  \n0: indexer 127.0.0.1:8030:8030  \nVerifiers count: 1  \n0: verifier 127.0.0.1:8040:8040  \n"}




#

描述

管理用户的钱包

用法

方法 描述
`` 导出钱包私钥
`` 导出钱包账户地址

#

描述

导出钱包私钥,64个十六进制字符串。

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

例子

# 1. 导入钱包私钥
> ppio wallet key
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"AAAABBBBCCCCDDDD..."}




#

描述

导出钱包账户地址,以ppio开头的base58字符串。

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc

例子

# 1. 导出钱包账户地址
> ppio wallet account
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"ppioBBBBCCCCDDDD..."}





# tool

描述

pcdn辅助工具

用法

方法 描述
`` 查看peer信息
`` 查询中心化服务器信息
`` 查询指定任务的peer连接信息(暂时只支持download)
`` 向tracker查询peer
`` 向mapping查询rid(暂时不可用)
`` 查询NAT type

# peerInfo

描述

查看peer信息

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetInfo"}' http://127.0.0.1:18060/rpc

例子

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetInfo"}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":{"ExternalAddress":{"UDPPort":8060,"TCPPort":8060},"PeerID":"002508021221037b5fcb2f1a9cfbb76232ee20a84dce4a03f070828875f22a31ba53d37f2ef84a","Type":1,"IPList":["192.168.136.129","172.17.0.1","172.18.0.1"],"InternalPorts":{"UDPPort":8060,"TCPPort":8060},"ProtocolVersion":1}}




# servers

描述

查询中心化服务器信息

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetServices"}' http://127.0.0.1:18060/rpc

例子


> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetServices"}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":[{"Name":"Tracker","Addr":"192.168.50.229:9091","Status":"good"},{"Name":"Mapping","Addr":"192.168.50.229:9094","Status":"good"}]}

or 

{"id":1,"jsonrpc":"2.0","result":[{"Name":"Tracker","Addr":"localhost:9091","Status":"invalid response from tracker"},{"Name":"Mapping","Addr":"localhost:9094","Status":"rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial tcp 127.0.0.1:9094: connect: connection refused\""}]}




# peers

描述

查询指定任务的peer连接信息(暂时只支持download)

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetConnect","params":[taskID]}' http://127.0.0.1:18060/rpc

例子

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetConnect","params":["c3ec7b94e23a4b68a3e3a6c5d8654b08"]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":[null,{"ExternalAddress":{"IP":"192.168.136.129","UDPPort":8061,"TCPPort":8061},"PeerID":"0025080212210298508a4218f1fbd912996402c21d812819aa257c61547350eef34ad57d0dbc60"}]}




# queryPeers

描述

向tracker查询peer

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QueryPeers","params":[RID]}' http://127.0.0.1:18060/rpc

例子

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QueryPeers","params":["sheN5h7aE58ggVDxc2hCN6zxUhWqiv9e1WheKW1ds29fg95mtTXR5Leh7pmH8Y"]}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":[{"ExternalAddress":{"IP":"101.94.136.189","UDPPort":8060,"TCPPort":8060},"StunAddress":{"IP":"182.117.235.58","Port":8060},"PeerID":"","IPList":["10.230.8.157","192.168.1.105"],"InternalPorts":{"UDPPort":8060,"TCPPort":8060},"ProtocolVersion":1}]}




# NATState

描述

查询NAT type

用法

> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NATState"}' http://127.0.0.1:18060/rpc

例子


> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NATState"}' http://127.0.0.1:18060/rpc

{"id":1,"jsonrpc":"2.0","result":"{\n  \"IsNATCheckFinished\": true,\n  \"NATType\": \"symmetric\"\n}"}

or

{"id":1,"jsonrpc":"2.0","result":"{\n  \"IsNATCheckFinished\": false\n}"}