関数のerlangリファレンスから、 peername
2 つの可能な戻り値があることが示されています。1 つは IP アドレスとポートで、もう 1 つはエラーです。問題は、エラーが発生した場合に両方をチェックする case ステートメントを作成するにはどうすればよいかということです。
これまでのところ、関数が実際に何か有用なものを返す場合にのみ機能するこのコードがありますが、エラーが発生した場合、タプルはどうなりますか?
ip_address(Socket) ->
{ok,{Ip,Port}} = inet:peername(Socket),