2008-09-18 91 views
1

我有一個安裝程序(只是一個普通的C++ MFC程序,而不是基於Windows Installer的),需要根據Internet連接的類型設置一些註冊表值:寬帶,撥號和/或無線。目前這些信息是通過詢問一系列是或否的問題來確定的。問題在於進行安裝的人不是擁有和使用計算機的人,因此他們並不總是確定這些問題的答案應該是什麼。有沒有一種方法可以通過程序來確定這些信息?該代碼是用Windows XP及更高版本的C++(以及可選的MFC)編寫的。基於.NET的解決方案不是一種選擇,因爲我不想在我們的安裝程序可以運行之前確定框架是否已安裝。如何在C++ for Windows中檢測撥號,寬帶或無線Internet連接?

爲了澄清,問題主要在於無線和撥號連接不是「永遠在線」,這就需要我們的產品採取不同的行爲方式,因爲我們的服務器並不總是可用。因此,嚴格的速度測量解決方案將無濟於事,儘管存在一個與速度相關的設置,以便產品在連接後不會嘗試通過撥號連接發送MB信息。

回答

0

最好的辦法是搶到默認的活動網絡連接,確保它是互聯網連接(ping google.com或類似),然後詢問它是什麼類型的設備。您應該能夠確定用戶擁有什麼連接。

我相當有信心這是可能的,但不知道如何去解決它。

+0

我試圖避免讓設備和自己的班級名單,因爲總會有人想出了一個我沒有想到的,但我同意它可能變得有必要。 – jeffm 2008-09-18 15:35:15

3

[我不知道如何得到你所要求的信息,但是...]也許你可以改變(爲你自己)你試圖完成什麼?比如,不要詢問「用戶是否有寬帶或撥號」,而是詢問「用戶的互聯網連接有多少帶寬」 - 然後您可以嘗試在沒有任何用戶輸入(如通過測量帶寬)的情況下回答改寫的問題。

Btw。如果你問用戶只是爲了「寬帶或撥號」,你可能會遇到一些問題:

  • 如果用戶有一些你沒有預料到的連接類型,該怎麼辦?
  • 如果用戶不知道(因爲只有一根以太網電纜連接到PPPoE DSL調制解調器/路由器)會怎麼樣?
  • 如果用戶正在通過一系列連接的連接(通過撥號VPN,一種具有寬帶某種其它網絡?)

問計「能力」,而不是「類型」可能是在那些更有用案例。

+0

好點。請參閱上面的說明。 – jeffm 2008-09-18 15:55:27

0

我認爲你應該做一個快速的連接速度測試。只需下載一些特定大小的文件,時間需要多長時間,並且您將知道速度。我同意其他人的看法,不要問他們是什麼類型的連接,更重要的是速度。也許明年他們會拿出100mbit的撥號...你想讓每個人都使用這個驚人的新設備來獲得應用程序的蹩腳的低帶寬版本嗎?

1

關於這個問題:「是互聯網連接永久性的或不呢?」:

  • 最好的辦法是可能使應用程序強大到足以總是應付非永久連接:-)這將與撥號和寬帶一樣工作...
  • 或者,您可以瞭解用戶的互聯網連接已建立了多長時間,並與系統正常運行時間進行比較?如果連接在線時間幾乎與計算機運行時間一樣長,則可能是永久連接。

無論如何,這些啓發式可能會因爲模糊的連接類型而失敗。

此外,關於有關未發送大量數據點:如果人們有一個「寬帶+低流量限制」的關稅,你不應該發送大量數據或者即使帶寬允許:-)

+0

關於應對連接類型的程序設計的要點。有這樣一個原因,但是如果不進入應用程序所做的事情,我不能在公共場合真正做到這一點很難解釋。 – jeffm 2008-09-18 17:34:18

0

我會同意oliver,正如你所暗示的那樣:你已經具備了處理連接丟失的功能,爲什麼不默認啓用呢?

寬帶連接可以得到搞砸到:routersoftware即凍結(發生了很多對我來說),或poweradapter薯條,...

相關問題