2010-02-03 15 views
1

我有一個需要端口1002打開的套接字程序,我想知道如何在Windows上使用C++端口,所以我可以自由使用此端口?如何在C++中向前端口?

+1

你可能會需要建立的原因,是你不能使用該程序,爲什麼您認爲「端口轉發」是解決你的問題。 – 2010-02-03 03:17:15

+0

即使您可以將您的傳輸端口轉發,您也無法繞過禁止的端口或繁忙的端口。改爲改變套接字程序設置。 – shinkou 2010-02-03 03:20:56

+0

一個半可信但可能不正確的方式來閱讀這個問題:「我正在嘗試在Windows上進行http://linux.die.net/man/1/forward編譯,因此我可以使用不同於一個是它設計使用的。「不知道它與C++有什麼關係。 – bk1e 2010-02-03 07:04:25

回答

6

端口轉發在客戶端系統的上游完成,通常在路由器上完成。

我相信一些應用程序使用通用即插即用與上游路由器通信公開打開一個端口,但你必須做的研究很多,看看它是如何做:我沒有絲毫。

-1

您不能端口編程語言前進,那是後話,它被設置在路由器上。

+0

UPnP提供了一個XML API來執行此操作;許多(如果不是全部的話)路由器支持這種開箱即用的方式。 – Luke 2010-02-03 04:32:57

+0

如果路由器不能通過軟件端口轉發,我不知道他們是如何管理的... – 2010-02-03 04:49:02

+0

@Jon:非常可愛。鑑於OP的理解水平,我認爲(我敢肯定你會這麼做),我的問題很有幫助。 – Hogan 2010-02-03 11:49:41

3

所以,你需要UPnP或NAT-PMP。您的系統可能有用於執行這些協議的庫,或者您可以使用muniupnp,該服務器既有可在Linux或BSD盒上運行的服務器,也可以使用客戶端庫。

有沒有保證,將工作,所以你可能需要更進一步,使用STUN,TURN或ICE。有一個圖書館做這些事here

永遠記住,有時這是不可能的。也實施IPv6,有時在IPv4沒有的情況下有效。鼓勵用戶安裝v6和Teredo。

1

與Windows XP開始,微軟提供了一個UPnP library。它實際上相當複雜,因爲該庫僅提供了與網絡設備進行通信的基礎知識。您將不得不研究各種UPnP specifications以執行特定於設備的任務,例如端口轉發。相信我,要完成相對較少的工作是一項艱鉅的任務;最好把它放在你的文檔中,用戶可能需要查閱他們的路由器手冊以轉發必要的端口。這幾乎是每個人都做的。

+0

阿門。這非常困難 – 2010-02-03 05:07:36

+0

UPnP很難用作程序員,幾乎與在路由器上成功配置端口轉發器一樣困難,因爲普通的「DHCP?what-an-IP-address?」是什麼?用戶。你可能只需要技術支持給他們打電話,節省一些時間;-) NAT和防火牆就是一種敵視良好用戶體驗的技術的很好的例子,系統和普通用戶很難通過它們進行通信理解。 – 2010-02-03 12:31:40

0

我相信最流行的做法是寫文檔,告訴用戶哪個端口(S)在其打開防火牆。

+0

我的經驗是,讓用戶在網上搜索論壇帖子告訴他們應用程序使用什麼入站端口是一樣的常見;-) – 2010-02-03 12:37:08