diff --git a/src/httpSocket/utSocket.erl b/src/httpSocket/utSocket.erl index 39fdaa7..e6865d3 100644 --- a/src/httpSocket/utSocket.erl +++ b/src/httpSocket/utSocket.erl @@ -5,33 +5,37 @@ , socketToIpTuple/1 , socket2port/1 , str2ip/1 + , ipToStr/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]), "."); - _ -> - "" + try {ok, {TIp, _TPort}} = inet:peername(Socket), ipToStr(TIp) + catch _:_ -> + try {ok, {SIp, _SPort}} = ssl:peername(Socket), ipToStr(SIp) + catch _:_ -> + "0.0.0.0" + end end. +ipToStr({A, B, C, D}) -> + <<_:8, IpStr>> = <<<<".", (integer_to_binary(O))/binary>> || O <- [A, B, C, D]>>, + IpStr; +ipToStr(Ip) -> + <<_:8, IpStr>> = <<<<":", (integer_to_binary(O, 16))/binary>> || O <- tuple_to_list(Ip)>>, + IpStr. + %% 获取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 + try {ok, {TIp, _TPort}} = inet:peername(Socket), TIp + catch _:_ -> + try {ok, {SIp, _SPort}} = ssl:peername(Socket), SIp + catch _:_ -> + {0, 0, 0, 0} + end end. - socket2port(Socket) -> case inet:peername(Socket) of {ok, {_, Port}} -> Port;