2012-05-31 37 views
0

我是插座新手,我的問題是這樣的:通過家庭網絡上的兩臺機器之間的插座連接?

假設我有一臺家用電腦,我的朋友也有 家用電腦。 (我通過gprs/edge調制解調器連接到網絡;我的朋友 通過電線連接 - 我不確定這是否重要)。

我可以檢查我的ip例如whatismyip.com頁;他 也可以爲他做。

如果我寫了一些簡單的套接字(WinSock)代碼和 把這些IP放在這樣的代碼中,是否足以在我們的機器之間進行一些網絡通信,並且它會工作還是不工作?

哪裏把這樣的IP在WinSock示例代碼?

編輯:一些解釋

我使用C/WINAPI 我已經編譯和我自己的機器 本地測試了一些例子,它似乎工作,但我不知道這是否會工作兩臺 遠程計算機如果我會提供兩個IP的(從 whatismyip.com頁面獲得)。

它會工作肯定或不可能?需要我只提供 這些IP在一些套接字地址字段或我需要做更多?

EDIT2:

我需要做兩個主場 計算機(通過Winsock連接互聯網) 我可以關閉防火牆之間的一些簡單的遊戲WINAPI,它wouldnt工作? 如何使它工作?

+0

此代碼不起作用。您的相應機器位於防火牆之後。你在whatismyip.com上看到的IP [www。whatismyip.com]不是你的機器。在DOS shell中運行'ipconfig'來查看你的IP。正如@Nikolai N Fetissov在下面提到的,閱讀NAT和端口轉發概念將幫助您更好地理解。 – Bhaskar

+1

如果接收方機器位於路由器後面,它將不起作用,除非路由器配置爲端口轉發。如果兩臺PC都不在路由器後面,那麼它可以工作,只要接收PC的ISP沒有阻塞端口(大多數ISP需要額外付費才能運行自己的服務器)。 –

回答

0

首先,您需要決定要使用哪種協議。
TCP或UDP?
如果你想要TCP/IP通信,你需要一臺計算機作爲服務器(監聽),一臺計算機作爲客戶端。

你用C++編程嗎?
以下是服務器端的示例:code

+0

我添加了一些解釋,至於udp或tcp我寧願最簡單的一個,TCP可能 –

2

您需要閱讀Network Address Translation,這是大多數家庭路由器所做的。然後將一個port-forwarding規則添加到您的路由器/調制解調器防火牆。

+0

所以,當它將工作,我怎麼能認識到這種情況下,沒有辦法建立這種連接(這是爲簡單的遊戲)路由器選項操縱?我想通過互聯網與winsock進行一些簡單的遊戲或兩臺家用電腦之間的聊天 - 如何操作? –

+0

它只是防火牆/路由器設置的問題,然後它會工作? –

+0

如果你在NAT後面,你需要連接到一些已知的全局可路由地址(這是你的一方作爲*客戶端*時),或者配置你的路由器允許連接到你的計算機(你的身邊是*服務器*接受連接)。所有這一切都適用於TCP和UDP,就UDP來說,你沒有明確的連接概念,只有一方首先開始監聽數據包。 –

2

你有幾個選擇。一種是設置靜態端口轉發 - 即配置您的路由器,使端口X轉到內部IP地址a.b.c.d.這通常要求您使用靜態IP地址設置您的計算機。

大多數人通常寧願避免這種情況 - 這可能,但不一定是微不足道的。一些可用的工具/協議是STUN,TURN,ICEUPnP。雖然您可以直接使用UPnP,但您可能會發現通過像libupnp這樣的庫處理起來更容易一些。

+0

我有一個電話卡調制解調器(gprs /邊緣)調制解調器連接,我沒有路由器,我的一個朋友可能有家庭路由器(他是計算機管理員,所以可能可以設置他的路由器好),第二個可能有gprs /邊緣連接也是如此 - 任何人都可以告訴我如何以最小的努力測試我的winsock客戶端服務器程序?打電話給我的gprs/edge朋友問他關於ip的信息,並向他發送客戶端或服務器代碼,將他的IP加入其中併發射它? –

+0

@ user982377:關於唯一的區別可能是您可能沒有涉及NAT路由器(但可能會再次出現)。 –

相關問題