2013-03-11 304 views
1

有沒有辦法讓一個客戶端的IP地址在Erlang的TCP連接;基於客戶端連接到服務器的假設?Erlang:客戶端IP地址,發送數據包到特定的客戶端?

我也想知道是否有必要發送特定的數據包給特定的客戶端;如服務器沒有廣播的情況下,但是我需要IP地址發送數據包給特定的客戶端,還是服務器只是爲每個客戶端使用引用(erlang:monitor)?

回答

3

對於另一端的地址,inet:peername(Socket)。但是,如果要在TCP Conversation中處理每個客戶端,則一旦每個客戶端連接,通常會生成單獨的erlang進程來處理該進程,然後再生成進程。

然後,在receive loop內,您可以向/從客戶端發送和接收二進制數據。考慮看這個模塊:gen_tcp,詳情。然而,你的問題聽起來像,你想實現一個Peer-to-peer系統。在這樣的系統中,您可以在軟件中創建agents,每個代理都可以隨時成爲服務器或客戶端。如果代理之間的通信只是按需提供,並且只有在需要發送內容時纔會創建會話/連接,這一點尤其需要。我可能不應該這樣做。