【发布时间】:2011-01-17 17:24:08
【问题描述】:
我用 erlang 编写简单的服务器应用程序。
此应用程序代码:https://gist.github.com/783117
我尝试使用 telnet 连接到它。当我连接到从路由获取的本地主机或本地 ip 地址时,它没问题,但是当我尝试使用外部 ip 连接到服务器时,它不起作用。
怎么了?
如果我使用带有 {0,0,0,0} 的选项:
Opts = [binary, {ip, 0,0,0,0}, {reuseaddr, true},
{keepalive, false}, {active, false}],
我明白了:
异常退出:badarg
netstat -ltn | grep 110
tcp 0 0 0.0.0.0:110 0.0.0.0:* 听
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
谢谢。
【问题讨论】:
-
可能,您打开了绑定本地地址的端口,但您必须检查您的端口监听的 ip 以确保。你能运行
netstat -ltn | grep 110和route -n吗? -
防火墙是另一个可能有问题的经典。
-
它应该是
{ip,{0,0,0,0}}而不是{ip,0,0,0,0}在你的代码中。 -
您应该检查传入的流量,例如线鲨。你试过吗?
-
这似乎是网络问题,您的 netstat 打印输出显示 erlang 正确打开了端口。这个问题有两个部分:如何打开一个端口监听 erlang 中的所有接口? (已回答)以及为什么我不能从外部地址连接到系统中的端口(未回答并且可能是题外话)。我投票决定保留第一个,如果您愿意,可以为第二个打开另一个,并提供足够的数据来回答。