erlang将http查询绑定到ip(或接口)

在nodejs中,我们有http.request(options [,callback])和localAddress(用于绑定networking连接的本地接口)。 这工作很好。 我怎样才能在Erlang中实现呢? 现在我使用ibrowse来处理请求,但这不是一个限制。 我想我需要看看在erlang中朴素的http是如何工作的,但是可能会有人遇到这个问题。

Erlang中的基本TCP为gen_tcp:connect / 3,4提供了一个选项,您可以在其中声明特定的接口(或套接字types等)。

如果我只想连接到一些远程的主机:端口,调用如下所示:

{ok, Socket} = gen_tcp:connect(Host, Port, []) 

如果我想连接的本地端来自一个特定的地址(例如,在这台机器上192.168.5.23是wlan0,192.168.7.67是eth0),我可以这样做:

 {ok, Socket} = gen_tcp:connect(Host, Port, [{ifaddr, {192,168,5,23}}]) 

如果我想连接一个特定的端口,我会添加端口选项:

 Options = [{ifaddr, {192, 168, 5, 23}}, {port, 11311}], {ok, Socket} = gen_tcp:connect(Host, Port, Options), 

这只是香草TCP。 在Erlang编写一个HTTP / 1.1客户端非常简单,取决于你想做什么可能是理想的。

还有一个名为httpc的内置http客户端(以及像gun和hackney那样的其他一些更具特色的更清晰的客户端)。 这些都使用与gen_tcp类似的参数发出请求 ,包括相同连接选项的可用性以及一个非常简单易用的特殊httpc:set_options / 1,2 :

 ok = inets:start(), ok = httpc:set_options([{ip, {192, 168, 5, 23}}, {port, 11311}]), {ok, Response} = httpc:request("http://zxq9.com/archives/1311"), 

希望这是足够的信息,让你开始。