带记录作为参数的函数

时间:2017-08-09 22:59:16

标签: syntax erlang

我知道这是非常基本的,但这让我感到困惑:

peercert定义为:

peercert(Socket) -> {ok, Cert} | {error, Reason}

Types

Socket = sslsocket()
Cert = binary()
The peer certificate is returned as a DER-encoded binary. The certificate can be decoded with public_key:pkix_decode_cert/2.

好的,太好了。 sslsocket定义为-record(sslsocket,{fd = nil,pid = nil})

所以我跑:

New = #sslsocket{pid = Pid},
io:fwrite("~n~npeercert~p~n~n", [ssl:peercert(New)]).

但我收到错误

no function clause matching ssl:peercert({sslsocket,<0.1277.0>,undefined}) 

所以我用Pid作为参数运行它并得到类似的错误:

no function clause matching ssl:peercert(<0.1277.0>)

我完全被这里难过了。我之前有过它,函数说这需要这些作为参数......

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

sslsocket()类型不是名为sslsocket的记录,否则会写为#sslsocket{}。它是一个“黑盒子类型”(它的真实类型是一个实现细节),但你可以从函数ssl:connect()获得它。