套接字服务器ip / port问题

时间:2009-09-12 16:36:15

标签: linux networking sockets ubuntu

我正在尝试在ubuntu机器上设置套接字服务器。我一直在我自己的机器上设置相同的服务器脚本,它完美地工作。在我的路由器中,我将端口10007转发到正确的机器并将ip绑定到我的本地IP(192.168 ...:10007)。

现在我需要在专用服务器上进行设置,这就是问题的起点。我似乎没有在服务器上的本地IP,至少ifconfig不会给我一个。我试图绑定到公共IP而不是127.0.0.1或0.0.0.0,如果我从同一台机器telnet而不是从另一台机器上运行,它可以正常工作。谁知道如何解决这个问题?我需要设置某种端口转发吗?

3 个答案:

答案 0 :(得分:2)

不要绑定到特定的IP地址;使用INADDR_ANY(IPv4)或全零地址。

Ubuntu包含自己的防火墙作为系统的一部分。如果无法从其他计算机进行连接,请检查是否将其配置为阻止与端口的连接。

Ubuntu Firewall documentation
Ubuntu ufw man page

编辑:您和阻止端口的服务器之间也可能存在防火墙。您可以咨询您的托管服务提供商或您的服务协议;他们可能需要专门启用所需的每个额外端口。一些提供商提供不同的托管软件包,从仅允许端口80的基本Web共享托管软件包到允许完全访问机器和所有端口的专用服务器。

答案 1 :(得分:1)

NAT - Network Address Translation允许多台计算机在路由器后面具有本地地址,该路由器向互联网提供一个公共地址。使用旧服务器,您几乎肯定会在路由器后面运行NAT,这就是为什么您必须进行端口转发才能到达您的服务器。

如果您当前不在NAT设备后面,那么这就是您没有在192.168.x.x或172.16.x.x或10.0.x.x范围内看到私有地址的原因。您直接连接到互联网,私人和公共地址之间没有区别。 79.136.x.x是您的公共地址,而您没有私人地址。只需绑定并运行您的服务器。

答案 2 :(得分:1)

运行程序后,netstat中列出了端口(我使用netstat -a)?这将告诉您端口是否打开并正在侦听。