erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 
 

45 righe
931 B

-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.