2011-12-12 82 views
2

我一直在学习如何编程套接字,但是当我尝试写代码时,我遇到了一些问题。该代码适用于连接到同一局域网上的计算机,但当我试图通过互联网连接到另一个网络上的两台计算机时,我无法执行此操作。套接字编程学习

这是因为程序还是这是因为网络安全?

如果我想让应用程序通过互联网进行通信,我可以在哪里找到关于它的更多信息。我正在考虑制作聊天程序,以便更好地理解它,但我甚至无法通过互联网使程序通信!

编辑: 那么我使用的端口是6892.它只是一个随机端口。我很喜欢学习这些东西。

+4

今天水晶球朦胧。请显示一些代码或至少一些关于您正在使用的端口的细节,您的网络设置等。 –

+0

您应该记住,互联网上的大多数端口都被防火墙阻止,因此请尝试连接两台主机来控制这些。 –

+0

但你如何通过防火墙?比如今天常见的聊天应用程序必须通过防火墙吗? – mma1480

回答

3

如果你使用本地套接字,并且你在防火墙后面,这肯定会失败。您的防火墙几乎肯定会设置为仅允许端口80(http)和端口443(?)(https)。

+0

那么这是否意味着我必须在防火墙上打开一个端口或者进行某种端口转发? – mma1480

+0

我会避免打开任何不必要的端口,特别是如果你不确定你在做什么。这是被黑客攻击的绝对方式。但是,是的,你可以做到这一点。标准端口列表在这里http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 正如下面的Clyfe评论所提到的,即使您打开了正确的端口,您甚至可能无法连接。例如,你可以考虑HTTP隧道。 – Barry

+0

您需要打开您在套接字链接两端之间的任何防火墙上使用的端口。 – ChrisBD

2

在某些第3层网络拓扑中,计算机之间的连接不是双向的,而且必须通过联合代理等技术来调解通信。

远程工作站可能无法直接访问您的计算机,他只能访问您的网关,具体取决于设置。

0

是一个或两个或您的计算机在本地网络?如果他们的IP地址以192.168开头,则它们位于本地网络中。

您还可以使用http://whatismyipaddress.com/来检查显示的IP是否与您在计算机上看到的IP相同,但请记住删除任何代理。

如果目标计算机位于本地网络中,或者所显示的IP与计算机上显示的IP不同,则会出现问题。这种情况与你的程序无关,但你必须配置你的网络。您可能必须联系您的网络管理员才能解决问题。

+0

当两台计算机都在本地网络中时,他们能够进行通信。但是当它们不在同一个地方时,程序就不能通信。这就是我想要了解的:当他们不在同一个网络上时如何让他们沟通。 – mma1480

+0

@ mma1480这是因为无法在网络外看到本地网络地址。您需要知道用于访问本地网络的地址(通常是上述网站中显示的地址),您需要端口转发。也许这可以帮助:http://en.wikipedia.org/wiki/Port_forwarding。但配置网络转发需要管理权限才能管理本地网络的配置。您可能需要联系您的网络管理员。 – fefe