2013-02-04 169 views
1

根據我對DNS服務器的理解,簡單的解釋是,對於給定的主機名,DNS服務器使用查找表來返回主機名的IP地址。C中的DNS服務器返回IP地址和端口號

對於我的一個項目,我用我的客戶端通過WiFi網絡連接到服務器,並指定服務器在客戶端上偵聽的IP地址和端口。 新的要求已經到來,要求在網絡設置中指定一個DNS服務器,並且DNS服務器反過來返回我的服務器的IP地址和端口號。

我通過在線檢查DNS服務器的請求/響應,並且發現很多地方提到端口號不是由DNS服務器發送的。這樣對嗎?

我在Visual Studio 2005中編寫了我的項目。是否有任何可以與我現有的Visual Studio項目集成的DNS服務器的libray /代碼?對於一個特定的主機名,我可以在響應中指定端口號嗎?

我已經檢查了許多C源代碼,如ldns/bind的DNS服務器,但我還沒有找到一種方法來與Visual Studio集成。

+0

可以在DHCP響應中指定DNS服務器,類似地,您可以使用多播DNS-mDNS,它根本不需要服務器設置。 –

回答

0

這只是沒有意義,端口不是主機的域名的一部分。給定的主機(=單個域名)可以運行任意數量的應用程序,即打開任意數量的端口。

您的想法需要將某種形式的所需應用程序的身份發送到DNS服務器進行查找,或者它可以使用正在運行的服務及其端口列表進行回覆。至少就我所知,它只是不這樣工作。

沒有什麼能夠阻止您在任何其他端口(如8080)上運行Web服務器(通常位於端口80),這在開發過程中經常會發生。該URL將爲http://example.com:8080,由於瀏覽器只在DNS中查找example.com部分,因此DNS無法覆蓋端口號。

+0

是的,當我在沒有DNS服務器的情況下進行測試時,我用格式爲http:// ipaddress/example:8080或https:// ipaddress/example:443但現在有可能如果我運行DNS服務器在我的機器和客戶端發送請求,以這種方式http://xyz.com/example,DNS服務器返回IP地址和端口8080? – user1692342

+1

@user你必須修改DNS代碼才能做到這一點 - 或者使用其他字段(如txt指定端口),並且還要修改瀏覽器代碼(如果需要自動執行某些操作);但你可能不需要那個。端口由參與者同意 - 最常見的是80(http)或443(https),瀏覽器在默認情況下解決它們,而無需執行任何操作(有時也可能用於https)。因此,如果您在Web服務器上使用端口12345,則所有參與者都必須創建書籤'myserver.org:12345' –

1

您可以在TXT DNS記錄中指定有關給定域的附加信息。所以,你可以添加文字標籤:價值的一部分到你的域TXT記錄。

+0

我該在哪裏設置?我應該使用哪個庫?是否有可能與視覺工作室整合? – user1692342

1

這可能是用戶想要定義的嗎? DNS SRV record

+0

是的,這就是我正在尋找的。有沒有C庫實現它,並可以與視覺工作室集成? – user1692342

+0

對不起,我不知道我的頭頂上有什麼。嘗試搜索支持RFC2782的庫。 從你的問題來看,我不完全清楚你是否想要一個服務器(支持SRV請求)或客戶端(查找SRV記錄)的實現。我認爲至少客戶端是在一些圖書館員支持其他DNS查找中實現的。 – thuovila

+0

我需要服務器端的實現。 – user1692342