【发布时间】:2011-07-26 19:20:12
【问题描述】:
嘿嘿嘿,
我有一个必须在服务器 2008 集群上运行的 .Net 程序。 为了找出正确的 IP,我通过
解析 dnsGetHostEntry(VarDefinedInfConfig).AddressList(0)
但是当我转换我的旧代码时(此代码选择了错误的 IP)dns.GetHostName().AddressList(0) => 这将返回一个虚拟 IP 而不是正确的。
所以我将TcpListener 更改为(dns 是配置中的参数)
Dim listener As TcpListener = New TcpListener(New IPEndPoint(Net.Dns.GetHostEntry(dns).AddressList(0), 8001))
listener.Start()
在旧方式中,此代码定义了一个 tcpclient
Dim client As TcpClient = New TcpClient(Environment.MachineName, 8001)
Console.WriteLine("Done...")
client.Close()
这也连接到错误的 IP 所以我发现TcpClient 的过载并使用了那个
新方式:
Dim client2 As TcpClient = New TcpClient(New IPEndPoint(Net.Dns.GetHostEntry(dns).AddressList(0), 8001))
Console.WriteLine("Done")
client2.Close()
但是当我使用第二个时,我得到了异常“每个套接字地址(协议/网络地址/端口)通常只允许使用一次。
奇怪的是,如果我从 MachineName 获得的 IP 与从带有参数的 dns 检索到的 ip 完全相同。
有人知道这个异常的原因吗?通常它们应该具有相同的结果。
问候,
乔纳森
【问题讨论】:
标签: vb.net sockets tcp tcpclient tcplistener