2013-10-29 85 views
1

所以我一年的项目涉及与Erlang做一些非常讨厌的东西。我刚刚开始认真对待它。我的网络知识非常有限,需要询问/为什么不起作用。分布Erlang,网络,回声服务器

我跟着本指南,http://20bits.com/article/network-programming-in-erlang,提供二郎山代码的服务器代码

的指令来运行它是启动Erlang的代码,他reccomends 8888端口回显被送入它的文本,然后telnet到本地主机和瞧,进入回声服务器

我的问题是,我很容易在我的机器上运行此服务器,并有一个朋友telnet到服务器?

我认为这owuld是为给他我目前的IP地址,并使用远程登录中一样容易,但它没有工作

说实话,我不认为这是研究我应该行权至于做与二郎神到网络,但大多数地方似乎谈论本地运行

我理想中的指南将是东西,谈到使用多个Erlang节点,以某种非常基本的客户机/网络设置的东西

+0

它本地工作(在本地主机上)?它在本地工作(您家/办公室的机器)吗?你给你的朋友发了什么IP地址?所有这些问题的关键在于你可能在防火墙后面,并且必须将他从外部转发到你的机器 - IOW,在上面的第二个“本地”实例中运行一切之后,你就可以找出防火墙,等人 – KevinDTimm

+0

嘿,对不起,我完全忘记提到这一点。是的,当我在本地运行并在端口8888上telnet到127.0.0.1时它工作。 我尝试完全禁用Windows防火墙和Avast 10分钟,而我的朋友尝试连接并且仍然失败。 但是,你建议我正在尝试做什么应该能够工作? (是的,我知道这是一种不好的做法,禁用防火墙,而不是设置例外,但在现阶段调试比较容易) – user1079404

+0

'你给你的朋友发了什么IP地址?'(我最感兴趣的是前两组数字 - 192.168.xxx.yyy,172.16.xxx.yyy,10.xxx.yyy.zzz,64.38.xxx.yyy - 例如) – KevinDTimm

回答

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 -> ? 

解决此问题的方法称为端口转发。这是路由器上的一个配置选项,它将把给定端口的请求转发到本地网络上的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 Network。免费解决方案可从LogMeIn called Hamachi获得。你和你的朋友都需要下载和安装这个应用程序。你应该创建一个私人网络,让其他人加入。确保您的回显服务器正在侦听0.0.0.0,这意味着在所有IP地址上。然后客户端应该能够通过服务器的Hamachi IP连接到服务器。

即使无法控制自己的网络配置,VPN解决方案也应该可以正常工作。这比设置端口转发更安全,因为只有您的VPN中的用户才能访问您的端口。

最后一个注意事项,请确保您的本地防火墙已禁用,或至少允许您的应用程序和端口8888通过。

+1

我想添加到这个非常完整的答案,你可能有一个代理之间,你和互联网,可能过滤IP,端口或协议。 – Pascal