2015-06-05 62 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