假设您指定了TCP协议,是否可以以与套接字相同的方式将SqlConnection
绑定到本地IP端点? (我可以以某种方式访问TCP SqlConnection
的底层套接字吗?)
目标是强制在可能具有多个的计算机上使用特定网络适配器建立连接。我敢肯定第一个自然问题是“为什么”试图指出替代解决方案,但我不是在寻求替代方案。我只是想知道具体是否可行。谢谢。
答案 0 :(得分:1)
这确实是路由表的用途。如果您的网络适配器配置正确,则无需在应用程序级别处理此问题。
尽管如此,SqlConnection
甚至不必首先使用Socket
- 它是处理与SQL服务器的任何连接的公共类。可能。例如,这可以是直接套接字连接或命名管道。连接也可以合并。
连接字符串中没有允许您执行此操作的设置。这几乎结束了强制套接字连接的本地端点的任何合理方式。这不应该是令人惊讶的,因为应用程序根本不应该处理这样的东西。
通过相关的消息来源,很明显,即使实际上有一个套接字,它也不是.NET Socket
- 所以真的没有任何办法例如,即使使用反射也可以影响它。剩下的唯一方法是在winsock(或者可能是SQL客户端DLL)上安装DLL挂钩并拦截connect调用;当然,这是一个非常绝望的举动,如果你尝试会给你带来很多麻烦 - 更不用说它需要使用本机代码,并且它非常脆弱(并且必然会给其他人带来麻烦)应用程序,而不仅仅是你的。)
有更好的方法来处理您的方案。但是,既然你是not looking for alternatives
,那就是我所拥有的最好的。