erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

44 řádky
931 B

před 5 roky
před 4 roky
před 4 roky
před 5 roky
před 4 roky
před 5 roky
před 4 roky
před 5 roky
  1. -module(utSocket).
  2. -export([
  3. socketToIpStr/1
  4. , socketToIpTuple/1
  5. , socket2port/1
  6. , str2ip/1
  7. ]).
  8. %% socket转IP
  9. socketToIpStr(Socket) ->
  10. case inet:peername(Socket) of
  11. {ok, {{A, B, C, D}, _}} ->
  12. string:join(lists:map(fun com_type:to_list/1, [A, B, C, D]), ".");
  13. _ ->
  14. ""
  15. end.
  16. %% 获取ip
  17. socketToIpTuple(Socket) ->
  18. case catch inet:peername(Socket) of
  19. {ok, {Ip, _Port}} ->
  20. Ip;
  21. _ ->
  22. case catch ssl:peername(Socket) of
  23. {ok, {Ip, _Port}} ->
  24. Ip;
  25. _ ->
  26. {0, 0, 0, 0}
  27. end
  28. end.
  29. socket2port(Socket) ->
  30. case inet:peername(Socket) of
  31. {ok, {_, Port}} -> Port;
  32. _ -> 0
  33. end.
  34. str2ip(IP) when is_list(IP) ->
  35. [A1, A2, A3, A4] = string:tokens(IP, "."),
  36. {list_to_integer(A1), list_to_integer(A2), list_to_integer(A3), list_to_integer(A4)};
  37. str2ip(IP) when is_tuple(IP) ->
  38. IP.