0
我知道这是很基本的,但它的驾驶我了墙:功能的记录作为参数
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 =零,PID =零})
于是我运行:
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>)
我完全难住在这里。我以前工作过,功能说它需要这些作为参数...
谢谢你的帮助提前!
这个值看起来不对我。 'pid ='应该设置元组的第三个元素,而不是第二个元素。如果你使用'ssl:peercert({sslsocket,nil,Pid})''怎么办? – Dogbert
根据文档:'sslsocket()= opaque()',所以你不应该手动创建它。然而,我查看了实现,唯一我能猜到的是,你在某处包含了一个有冲突的'sslsocket'定义,或者在一个Erlang版本上运行,其中'sslsocket'定义不同(http://erlang.org /doc/apps/ssl/using_ssl.html说:“sslsocket的返回值缩写为[...],因为它可能相当大且不透明。”这看起来不再真实) –
@Dogbert查看我的对下面的帖子发表评论,我尝试过,并没有抛出任何错误,但它无限地挂起了 – Ryan