从套接字和另一个Erlang进程接收

时间:2010-02-17 20:18:15

标签: sockets erlang

在Erlang进程中,我如何从ssl套接字接收,同时从另一个带有receive原语的erlang进程接收?

这个想法是将来自套接字的内容转发给另一个进程;和倒退。

到目前为止我唯一的选择是从每一端接收一些时间,然后切换。当然,这将延迟处理在一个接口上接收的消息,同时从另一个接口接收消息。你有没有其他方法可以做到这一点?如果只有Erlang让我使用一个进程从套接字接收,另一个进程发送到套接字......

2 个答案:

答案 0 :(得分:2)

不确定我理解你的问题;无论如何,你可以在接收语句中有多个“子句”,因此当从任何一方接收某些内容时它会被“解锁”:

loop() ->
  receive
    {ssl, Msg} ->  % incoming msg from SSL, send it to process
      Proc ! Msg,
      loop();
    {proc, Msg} -> % incoming msg from process, send it to SSL
      SSL ! Msg,
      loop()
  end.

重要的是,您需要以一种可以通过模式匹配区分SSL和流程消息的方式格式化消息。

答案 1 :(得分:0)

无论如何,您将通过receive语句从进程中的HTTP_Client接收消息。您将能够轻松地描述“对话”:

{http, {RequestId, Result}}用于HTTP_Client“对话”

有关详细信息,请参阅here