我正在開發Connect 4的在線版本,並且希望能夠將2臺計算機連接在一起。使用.NET連接2臺計算機
我對創建計算機的TcpClient和偵聽器類之間的網絡,但據我所知,連接到同一網絡的計算機上我希望能夠成爲一個不同的,這些只是工作(LAN)
一些知識無論我們在哪個局域網上,地球和地球的一部分都與我的小妹妹連接。
這可能嗎?
我正在開發Connect 4的在線版本,並且希望能夠將2臺計算機連接在一起。使用.NET連接2臺計算機
我對創建計算機的TcpClient和偵聽器類之間的網絡,但據我所知,連接到同一網絡的計算機上我希望能夠成爲一個不同的,這些只是工作(LAN)
一些知識無論我們在哪個局域網上,地球和地球的一部分都與我的小妹妹連接。
這可能嗎?
是的。
在局域網上連接兩臺計算機與通過Internet連接相同。唯一的區別是:
沒有一個更具體的問題,我不能得到比這更詳細的。
TcpClient將能夠連接到互聯網上任何位置的套接字。但是,防火牆或NAT網絡可能會阻礙。您必須確保您至少有一個擁有可公開訪問的IP地址和開放端口。
既然你正在寫這個遊戲,你可能會考慮寫一個服務器專用的應用程序,允許兩個人從防火牆後面連接。然後,你只需要找出一種方法來承載它。
這是我寫的第一個網絡遊戲。
這可能是可能的。問題是,您可能必須打開防火牆,路由器等端口,以允許從一臺計算機到另一臺計算機的傳入通信。即使對於專業人員來說這也是一個問
你最好的選擇可能是創建一個具有衆所周知的地址的「遊戲服務器」。具有域名的廉價網絡服務器可以很好地工作。一個應用程序使用Web服務將消息發送到服務器,而另一個應用程序每秒查找一次,以查找新消息。
您可以使用.NET客戶端和偵聽器類連接到位於地球上任何位置的任何IP地址上的任何計算機。問題是你需要知道另一臺機器的IP地址,它需要接受你的連接。
如果另一臺機器在防火牆後面,事情變得更加困難。防火牆將阻止未經請求的連接請求 - 包括來自機器的請求與防火牆後面的其他機器通話。即時通訊客戶端始終存在此問題 - 它們通過將連接的每一端與中間服務器進行通信,並在兩個連接之間中繼數據來解決這個問題。
也就是說,您的機器可以向公用互聯網上的機器發出呼叫,並且當您通過防火牆建立此類連接時,防火牆將允許您連接的機器回覆您,但無法連接直接連接到防火牆後面的另一臺計算機,除非您事先安排在防火牆上打開特定的TCP/IP端口號。
現在有一些協議標準(如UPnP)可以讓您的計算機請求您的本地防火牆爲特定連接打開一個端口。如果另一端的計算機也這樣做,則可以通過它們各自的防火牆在兩臺計算機之間建立TCP/IP連接,您可以找出將端口號相互通信的方法。您需要將防火牆上打開的端口號發送到另一臺計算機,並且他們需要將防火牆上的開放端口號發送給您。因此,您仍然需要某種中介來至少交換此連接信息,以便每方都可以直接連接到另一方。
爲此構建一個網站/應用程序,然後您不需要擔心視覺效果。它也將工作在跨平臺,尤其是。如果你避免閃光。
看看Jabber,它是一個即時消息協議(由Gtalk使用)。與公衆聯繫jabber server或設置您自己的Jabber主機。 Jabber-net是.NET
庫你可以擴展它幾乎做所有你想要的,包括遊戲等
如果你有一個網站,你可以撥打網站上的頁面和登錄的IP地址調用電腦。在PHP中,您可以這樣做:
$Calling_IP_Address = $_SERVER['REMOTE_ADDR'];
然後,將數據保存到文本文件中。當你想玩某個玩家需要呼叫該網頁來記錄他們的IP地址時,另一個玩家讀取保存的文本文件以找出連接的位置。
工作完成。
哇,謝謝你的快速回答。實際上我驚訝地發現,得到的回答有多快,信息豐富。他們所有人都以不同的方式接近這個問題,我欣賞所有不同的觀點。 但是,對於我的情況,防火牆不應該是太多問題。另外,支付任何錢是不可能的,因爲一個愚蠢的小網絡遊戲。 這就是說, 我記得能夠獲得網關IP,但我不知道如何做到這一點的外部IP。你能幫我在這裏嗎? – Overload119 2010-08-26 20:11:40
@ user213371,它在原始帖子中。 http://www.whatismyipaddress.com/ – riwalk 2010-08-26 22:58:44