【问题标题】:How To Use Erlang ssl:close/2如何使用 Erlang ssl:close/2
【发布时间】:2018-01-16 18:25:56
【问题描述】:

我有一个 SSL 服务器,我想在收到第一个 ssl:recv 后将其降级为原始 gen_tcp。假设这可以用来做那我找不到如何使用它的例子。而且我还不太擅长使用 Erlang/OTP 文档http://erlang.org/doc/man/ssl.html#close-2

我对文档中的NewController::pid() 有点困惑:

How = timeout() | {NewController::pid(), timeout()}

【问题讨论】:

    标签: erlang erlang-otp gen-tcp


    【解决方案1】:

    NewController::pid()这里指的是你要设置为降级TCP套接字的“控制进程”的进程。套接字上的gen_tcp 函数只有在从该进程调用时才会起作用。除非您想使用来自其他进程的降级 TCP 套接字,否则您需要在此处发送 self()

    我能找到的将ssl:close/2 与元组一起用作第二个参数的唯一示例是this test。这是该代码的简化版本,可帮助您入门:

    % Assuming `SSLSocket` is the SSL socket.
    {ok, TCPSocket} = ssl:close(SSLSocket, {self(), 10000}),
    % You can use `TCPSocket` with `gen_tcp` now.
    gen_tcp:send(TCPSocket, "foo"),
    

    【讨论】:

    • 执行此操作时出现错误,超时。 “在后一种情况下,传输连接将在收到对等方的 TLS 关闭警报后移交给 NewController 进程。” -- peer(客户端)需要发送一些特殊的东西吗?
    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2018-01-19
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2014-10-20
    相关资源
    最近更新 更多