2015-06-05 82 views
0

假設您指定了TCP協議,是否可以像套接字一樣將SqlConnection綁定到本地IP端點? (是否有我可以以某種方式訪問​​的TCP SqlConnection的底層套接字?)將SqlConnection綁定到本地IP端點?

目標是強制與可能具有多個的計算機上的特定網絡適配器建立連接。我敢肯定,第一個自然的問題將是「爲什麼」,試圖指出其他解決方案,但我並沒有尋求替代方案。我只想知道這是否可行。謝謝。

回答

1

這就是路由表的用途。如果您的網絡適配器配置正確,則無需在應用程序級別處理此問題。

也就是說,SqlConnection甚至不必首先使用Socket s--它是處理與SQL服務器可能的任何連接的通用類。例如,這可以是直接套接字連接或命名管道。連接也可以合併。

連接字符串中沒有允許您這樣做的設置。而且這幾乎結束了爲套接字連接強制本地端點的任何合理方式。這應該不是那麼令人驚訝,因爲應用程序不應該處理那樣的東西。例如,即使實際上有一個套接字,它也不是一個.NET Socket--因此,即使使用反射,也沒有任何方式影響這個效果。剩下的唯一方法是在winsock(或者SQL客戶端DLL)上安裝DLL鉤子並攔截連接調用;當然,這是一個相當絕望的舉動,如果你嘗試 - 會引起很多麻煩 - 更不用說它需要使用本機代碼,並且它非常脆弱(並且也會導致其他應用程序出現問題,不只是你的)。

絕對有更好的方法來處理您的情況。但是因爲你是not looking for alternatives,這是我得到的最好的。

+0

感謝您的確認,Luaan。這是我期待的答案。 (我很抱歉,如果你冒昧地要求直接回答我的問題,我經常會發現,人們往往認爲你希望他們找到解決問題的辦法,而不是在有時只提供問題時回答你的問題適用於上下文。) – Solipcyst