2010-08-26 85 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地址時,另一個玩家讀取保存的文本文件以找出連接的位置。

工作完成。

相關問題