2010-08-26 89 views
5

我正在开发Connect 4的在线版本,并且希望能够将2台计算机连接在一起。使用.NET连接2台计算机

我对创建计算机的TcpClient和侦听器类之间的网络,但据我所知,连接到同一网络的计算机上我希望能够成为一个不同的,这些只是工作(LAN)

一些知识无论我们在哪个局域网上,地球和地球的一部分都与我的小妹妹连接。

这可能吗?

回答

1

是的。

在局域网上连接两台计算机与通过Internet连接相同。唯一的区别是:

  • 您将需要连接基于您外部 IP地址,而不是本地(试行http://whatismyipaddress.com
  • 你需要确保你的路由器所理解的传入流量重定向到您的计算机(您的外部IP地址映射到您的路由器,您需要确保路由器使连接返回到您的计算机)。

没有一个更具体的问题,我不能得到比这更详细的。

+0

哇,谢谢你的快速回答。实际上我惊讶地发现,得到的回答有多快,信息丰富。他们所有人都以不同的方式接近这个问题,我欣赏所有不同的观点。 但是,对于我的情况,防火墙不应该是太多问题。另外,支付任何钱是不可能的,因为一个愚蠢的小网络游戏。 这就是说, 我记得能够获得网关IP,但我不知道如何做到这一点的外部IP。你能帮我在这里吗? – Overload119 2010-08-26 20:11:40

+0

@ user213371,它在原始帖子中。 http://www.whatismyipaddress.com/ – riwalk 2010-08-26 22:58:44

1

TcpClient将能够连接到互联网上任何位置的套接字。但是,防火墙或NAT网络可能会阻碍。您必须确保您至少有一个拥有可公开访问的IP地址和开放端口。

既然你正在写这个游戏,你可能会考虑写一个服务器专用的应用程序,允许两个人从防火墙后面连接。然后,你只需要找出一种方法来承载它。

1

这是我写的第一个网络游戏。

这可能是可能的。问题是,您可能必须打开防火墙,路由器等端口,以允许从一台计算机到另一台计算机的传入通信。即使对于专业人员来说这也是一个问

你最好的选择可能是创建一个具有众所周知的地址的“游戏服务器”。具有域名的廉价网络服务器可以很好地工作。一个应用程序使用Web服务将消息发送到服务器,而另一个应用程序每秒查找一次,以查找新消息。

0

您可以使用.NET客户端和侦听器类连接到位于地球上任何位置的任何IP地址上的任何计算机。问题是你需要知道另一台机器的IP地址,它需要接受你的连接。

如果另一台机器在防火墙后面,事情变得更加困难。防火墙将阻止未经请求的连接请求 - 包括来自机器的请求与防火墙后面的其他机器通话。即时通讯客户端始终存在此问题 - 它们通过将连接的每一端与中间服务器进行通信,并在两个连接之间中继数据来解决这个问题。

也就是说,您的机器可以向公用互联网上的机器发出呼叫,并且当您通过防火墙建立此类连接时,防火墙将允许您连接的机器回复您,但无法连接直接连接到防火墙后面的另一台计算机,除非您事先安排在防火墙上打开特定的TCP/IP端口号。

现在有一些协议标准(如UPnP)可以让您的计算机请求您的本地防火墙为特定连接打开一个端口。如果另一端的计算机也这样做,则可以通过它们各自的防火墙在两台计算机之间建立TCP/IP连接,您可以找出将端口号相互通信的方法。您需要将防火墙上打开的端口号发送到另一台计算机,并且他们需要将防火墙上的开放端口号发送给您。因此,您仍然需要某种中介来至少交换此连接信息,以便每方都可以直接连接到另一方。

0

为此构建一个网站/应用程序,然后您不需要担心视觉效果。它也将工作在跨平台,尤其是。如果你避免闪光。

2

看看Jabber,它是一个即时消息协议(由Gtalk使用)。与公众联系jabber server或设置您自己的Jabber主机。 Jabber-net是.NET

库你可以扩展它几乎做所有你想要的,包括游戏等

0

如果你有一个网站,你可以拨打网站上的页面和登录的IP地址调用电脑。在PHP中,您可以这样做:

$Calling_IP_Address = $_SERVER['REMOTE_ADDR']; 

然后,将数据保存到文本文件中。当你想玩某个玩家需要呼叫该网页来记录他们的IP地址时,另一个玩家读取保存的文本文件以找出连接的位置。

工作完成。

相关问题