2013-11-29 30 views
0

我正在Erlang編寫一個分佈式聊天應用程序,用於我自己的學習/收益。我有一個客戶端和一個服務器,它們保持一個持久的TCP連接。客戶端使用gen_tcp:connect/3啓動連接。服務器實際上分佈在多個節點上。作爲消息接收TCP數據包,而不是使用gen_tcp:recv/2

的調用gen_tcp文件說:

數據包可以發送到使用發送/ 2返回的插槽Socket。從對等體發送的數據包被傳遞作爲消息:

{TCP,插座,數據}

因此,我的客戶能夠接收服務器發送作爲正常的Erlang消息的任何數據。這是我的應用程序所需要的。

問題是,我看不到任何方式使服務器上的連接的行爲相同的方式。我很喜歡它,如果我的服務器可以接收發送的數據作爲Erlang消息。這樣,服務器可以在等待客戶端發送消息的同時發送數據(即當聊天室中的另一個人發送消息時)。

有什麼辦法可以實現這種行爲嗎?

編輯:我知道prim_inet:async_accept/2,但如果可能的話我更喜歡文檔化的方法。

回答

2

查看inet:setopts,其中包含選項{active,once | true}。 Good article about

+2

當您打開套接字時,激活true爲默認值。 – rvirding

+0

謝謝!那正是我需要的。 –

+0

@rvirding我明確地將它設置爲false,不必要的。謝謝你指出。 –

相關問題