首先创建socket_example.erl:
-module(socket_example).
-compile(export_all).
nano_get_url() ->
nano_get_url("www.baidu.com").
nano_get_url(Host) ->
{ok,Socket} = gen_tcp:connect(Host, 80, [binary, {packet,0}]),
ok = gen_tcp:send(Socket, "Get / HTTP/1.0\r\n\r\n"),
receive_data(Socket, []).
receive_data(Socket, SoFar) ->
receive
{tcp,Socket,Bin} ->
receive_data(Socket, [Bin|SoFar]);
{tcp_closed,Socket} ->
list_to_binary(lists:reverse(SoFar))
end.
结果:
例子解释:
1.首先我们用erlang中自带的gen_tcp库来连接一个url,第一个参数是IP或域名,第二个参数为发送端口,第三个参数指定Socket传输格式为二进制,并且不修改直接发送。
2.然后我们向该Socket发送一个Get请求,并且指定返回数据分段发送。
3.接收返回数据。