-module(utSocket).
|
|
|
|
-export([
|
|
socketToIpStr/1
|
|
, socketToIpTuple/1
|
|
, socket2port/1
|
|
, str2ip/1
|
|
]).
|
|
|
|
|
|
%% socket转IP
|
|
socketToIpStr(Socket) ->
|
|
case inet:peername(Socket) of
|
|
{ok, {{A, B, C, D}, _}} ->
|
|
string:join(lists:map(fun com_type:to_list/1, [A, B, C, D]), ".");
|
|
_ ->
|
|
""
|
|
end.
|
|
|
|
%% 获取ip
|
|
socketToIpTuple(Socket) ->
|
|
case catch inet:peername(Socket) of
|
|
{ok, {Ip, _Port}} ->
|
|
Ip;
|
|
_ ->
|
|
case catch ssl:peername(Socket) of
|
|
{ok, {Ip, _Port}} ->
|
|
Ip;
|
|
_ ->
|
|
{0, 0, 0, 0}
|
|
end
|
|
end.
|
|
|
|
|
|
socket2port(Socket) ->
|
|
case inet:peername(Socket) of
|
|
{ok, {_, Port}} -> Port;
|
|
_ -> 0
|
|
end.
|
|
|
|
str2ip(IP) when is_list(IP) ->
|
|
[A1, A2, A3, A4] = string:tokens(IP, "."),
|
|
{list_to_integer(A1), list_to_integer(A2), list_to_integer(A3), list_to_integer(A4)};
|
|
str2ip(IP) when is_tuple(IP) ->
|
|
IP.
|