0
背後服務器最近,我開始在Windows玩弄插座和我遇到了一點麻煩.. 我有,我想找到DNS名稱解析主機的應用程序(通過互聯網連接)。解析DNS的Winsock,與路由器
該程序設法將DNS名稱解析爲IP地址,但其找到的IP地址是位於運行服務器應用程序的計算機前的路由器之一(這正是我所期望的,因爲它是默認網關)..
我的問題是,如果有一種方法來連接到服務器應用程序,而不必每次手動修改路由器的設置時,服務器應用程序安裝在路由器坐在系統上在它的前面..或者是以這種方式將計算機的端口轉發到路由器的唯一方法?
任何幫助表示讚賞! Thnx!
謝謝,非常有用!有什麼辦法來確定服務器是否在路由器形式的C++後面? (所以它只會嘗試自動轉發端口,如果它位於路由器後面)。 – elephantintheroom 2012-01-11 00:23:41
沒有完美的方法。但是您可以檢查本地IP地址是否在RFC1918空間中(例如192.168.x.y,10.x.y.x等)。如果是這樣,你絕對是在NAT之後。如果不是,你可能不是。 – 2012-01-11 01:20:28
我會讓服務器應用程序使用外部IP報告服務(例如'http:// iplookup.flashfxp.com','http:// automation.whatismyip.com/n09230945.asp'等查詢機器的公共IP ),然後檢索本地計算機的可用IP列表(使用'GetAdaptersInfo()'或'GetAdapterAddresses()'),然後檢查報告的IP是否在該列表中找到。如果不是,那麼服務器機器並不直接連接到互聯網(但這並不一定意味着它在路由器後面,它可能在代理或ICS的後面)。 – 2012-01-11 01:44:04