- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我快把自己逼疯了。
Microsoft 提供了一种使用构造函数为新 TCPClient 绑定(bind)本地网络适配器和端口的绝妙方法:
TcpClient newClient = new TcpClient(IPEndPoint localEP);
给定一个通用的 remoteEndPoint,IPv4 或 IPv6,并假设有许多可能的 localEP,似乎没有一种明智的方法来确定在调用之前绑定(bind)到哪个 localEP:
TcpClient.Connect(IPEndPoint remoteEP)
.net 确实提供了一个无参数的 TcpClient 构造函数,它将在调用 .Connect 时自动确定哪个 localEP 是最好的,但不幸的是,它不支持 IPv6 目标。
我的第一个想法是访问 IP 路由表并自行确定要使用的适配器,但似乎 .net 也不提供该功能。
我找到了一个涉及到 GetBestInterface() 的 P.Invoke 的解决方案,但不幸的是我需要能够在 Mono 中进行部署,因此确实需要一个托管解决方案。
我的问题是:给定一个已知的 remoteEP 和所有已知的 localEP 的列表,我如何在实例化 tcpClient 时正确选择正确的 localEP,以便连接方法成功。
最佳答案
如果您要问的是 localEP 使用什么,您可以使用 new IPEndPoint(IPAddress.Any, myPort)
这将绑定(bind)到本地计算机上的任何可用 IP 地址并使用端口我的端口
。这样,某些东西就可以使用它喜欢的任何 IP 连接到计算机。如果您有多个 IP(例如 NIC),它可以连接,如果我有 IPv4 和 IPv6,它可以连接到任何一个。
例如:
var client = new TcpClient(new IPEndPoint(IPAddress.Any, myPort));
但是,您通常可以只使用 new TcpClient();
关于c# - TcpClient(IPEndPoint localEP),选择正确的 localEp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11746809/
我快把自己逼疯了。 Microsoft 提供了一种使用构造函数为新 TCPClient 绑定(bind)本地网络适配器和端口的绝妙方法: TcpClient newClient = new TcpCl
我是一名优秀的程序员,十分优秀!