分布式Erlang,网络,echo服务器

时间:2013-10-29 20:45:55

标签: networking erlang telnet distributed

所以我一年的项目涉及到使用Erlang做一些非常讨厌的事情。我刚刚开始掌握它。我对网络知识非常有限,需要问一下如何/为什么某些东西不起作用。

我遵循了本指南http://20bits.com/article/network-programming-in-erlang中的代码,该代码为服务器提供了Erlang代码以回显馈送到其中的文本

运行它的说明是启动erlang代码,他推荐端口8888,然后telnet到localhost,然后访问echo服务器

我的问题是,在我的机器上运行此服务器并让朋友远程登录服务器是否容易?

我认为它应该像给他当前的IP地址一样容易,并使用它来远程登录,但它没有工作

老实说,我不认为这是关于与erlang建立联系的研究的正确方法,但大多数地方似乎都在谈论本地运行的事情

我的理想指南将讨论使用多个Erlang节点,以及某种非常基本的客户端/网络设置

1 个答案:

答案 0 :(得分:3)

如果您的朋友试图通过互联网与您联系,答案是否定的,您不能简单地告诉他您的IP地址并让他能够连接。

原因是NAT, or Network Address Translation。大多数计算机没有直接连接到互联网,而是首先通过路由器。路由器为您的计算机提供本地IP地址,通常以192.168或10开头。当您在互联网上询问您的IP是什么时,它会向您报告您的路由器的面向互联网的地址,而不是您正在浏览的机器

        IP seen from upstream
YOU     10.x.x.x
 |
Router  81.157.x.x
 |
Internet

这意味着当有人尝试使用您的外部IP地址连接到您的telnet服务器时,请求会到达您的路由器,该路由器不知道如何处理它。然后拒绝连接。

Internet -> 81.157.x.x:8888 -> Router -> ?

解决这个问题的方法是致电Port Forwarding。这是路由器上的配置选项,它将给定端口的请求转发到本地网络上的IP地址。您可以通过在自己的计算机上本地检查网络配置来查找地址。不要使用在线网站,因为这将为您提供路由器的公共IP地址:

Internet -> 81.157.x.x:8888 -> Router -> 10.x.x.x:8888 -> You

请注意,如果您无法控制您的网络,例如你在学校或工作,你需要一个网络管理员来做这件事。除非它是非常重要的东西,否则他们可能不会想要设置它。如果允许访问敏感端口(例如ssh(22)),打开这样的网络可能会很危险。此外,企业网络通常比家庭网络复杂得多,因此设置它是一个很大的麻烦。

如果您在同一个本地网络上,例如连接到同一所大学或工作网络,您应该能够连接到本地配置提供的IP(例如ifconfig),而不是来自Google的IP。

如果您只是与朋友一起测试,那么解决方法是使用VPN, or Virtual Private NetworkLogMeIn called Hamachi提供免费解决方案。您和您的朋友都需要下载并安装此应用程序。你应该创建一个私人网络,并让另一个人加入。确保您的echo服务器正在侦听0.0.0.0,这意味着在所有IP地址上。然后客户端应该能够通过服务器的Hamachi IP连接到服务器。

即使您无法控制自己的网络配置,VPN解决方案仍应正常运行。它比设置端口转发更安全,因为只有VPN中的人才能访问您的端口。

最后一点,请确保您的本地防火墙已被禁用,或者至少允许您的应用和端口8888通过。