1

tcp 接続のために Erlang でクライアントの IP アドレスを取得する方法はありますか? クライアントがサーバーに接続するという前提に基づいていますか?

また、特定のパケットを特定のクライアントに送信する必要があるかどうかも疑問です。サーバーがブロードキャストしていない場合と同様に、特定のクライアントにパケットを送信するために IP アドレスが必要ですか、それともサーバーは各クライアントの参照 (erlang:monitor) を使用するだけですか?

4

1 に答える 1

3

もう一方の端のアドレスについては、inet:peername(Socket). ただし、 で各クライアントを処理したい場合TCP Conversationは、通常、各クライアントが接続したら、それを処理するために個別の erlang プロセスをTransfer the Socket Ownership生成してから、生成されたプロセスに移動します。

次に、 内でreceive loop、クライアントとの間でバイナリ データを送受信します。このモジュールを見ることを検討してください: gen_tcp、詳細。ただし、あなたの質問は、システムを実装したいように聞こえますPeer-to-peer。このようなシステムではagents、各エージェントがいつでもサーバーまたはクライアントになることができるように、ソフトウェア内に作成します。これは、エージェント間の通信がオンデマンドでのみ行われ、送信するものがない限りセッション/接続が作成されない場合に特に必要です。私はおそらくそれに入る必要はありません。

于 2013-03-12T04:42:37.667 に答える