怎么设置listen的ip地址?

发布于 2022-09-12 02:39:54 字数 1099 浏览 13 评论 0

`

{ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]),
% {ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {"36.7.227.13", true}, {active, true}]),

`

第一行在本地localhost上监听,我想指定ip地址,第二行错了,应该是不能直接用字符串,而是用4字节的ip地址。该怎么写这行程序?


网上找了一些程序,大概如下,但是运行提示错了,信息很简单,只说12,15行之前错了,也就是Ip_to_integer和Integer_to_ip之前错了。

#!/usr/bin/env escript

main(_) ->
    % ok 是一个atom类型,在ErLang里,atom只能用于比较是否相同, 内部可能使用整数来代表某个atom
    {ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]),
    % {ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {Ip_to_integer([36,7,227,13]), true}, {active, true}]),
    {ok, Socket} = gen_tcp:accept(Listen),
    {ok,{IP_Address,Port}} = inet:peername(Socket),
    io:format("[~p][~p] ~n", [IP_Address, Port]),
    gen_tcp:close(Socket).

Ip_to_integer([A,B,C,D]) ->
    (A*16777216)+(B*65536)+(C*256)+ D.

Integer_to_ip=fun(Ip)-> {Ip bsr 24, (Ip band 16711680) bsr 16, (Ip band 65280) bsr 8, Ip band 255} end.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

熊抱啵儿 2022-09-19 02:39:54
{ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {ip,{127,0,0,1}}, {active, true}]).

在inet.erl line 801

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文