anchor.diff:              gen_tcp:close(Front)
       end.
   
  +back_socks5_handshake(Client) ->
  +    {ok, <<AType:8>>} = flip_recv(Client, 1),
  +    case AType of
  +        ?IPV4 ->
  +            {ok, <<AddressBin:32, Port:16>>} = flip_recv(Client, 6),
  +            Address = list_to_tuple(binary_to_list(<<AddressBin:32>>)),
  +            io:format("~p ~p.~n", [Client, Address]);
  +        ?DOMAIN ->
  +            {ok, <<DomainLen:8>>} = flip_recv(Client, 1),
  +            {ok, DomainBin} = flip_recv(Client, DomainLen),
  +            Domain = binary_to_list(DomainBin),
  +            io:format("~p ~p.~n", [Client, Domain]),
  +            {ok, Address} = inet:getaddr(Domain, inet),
  +            {ok, <<Port:16>>} = flip_recv(Client, 2)
  +    end,
  +    {ok, Remote} = gen_tcp:connect(Address,
  +                                   Port,
  +                                   [{active, false}, binary, {nodelay, true}],
  +                                   ?CONNECT_TIMEOUT),
  +    {ok, Remote}.
  +
   atoms_to_lists(L, R) ->
       lists:reverse(atoms_to_lists2(L, R)).
   
  
positive.code:     R.
  
  back_pool_new(BackAddress, BackPort) ->
      Pid = spawn(?MODULE, back_pool_process, [queue:new()]),
      register(back_pool, Pid),
      spawn(?MODULE, back_pool_fill_loop, [BackAddress, BackPort]).
  
  %% 不断的向 back_pool 放入 Back 相关的 Pid 直到 POOL_SIZE 个
  back_pool_fill_loop(BackAddress, BackPort) ->
  
negative.code:                                               {ifaddr, FrontAddress},
                                                {nodelay, true},
                                                binary]),
      info_new(),
      back_pool_new(BackAddress, BackPort),
      front_accept(Socket, BackAddress, BackPort).
  
  