Хей Хей,
У меня есть программа .Net, которая должна работать на кластере серверов 2008.
Чтобы узнать правильный IP я разрешаю днс по
GetHostEntry(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()
Но когда я использую второй, я получаю исключение "Обычно разрешено только одно использование каждого адреса сокета (протокола / сетевого адреса / порта).
Странная вещь, если я получаю IP-адрес от MachineName, точно такой же, как ip, полученный от dns с параметром.
Кто-нибудь знает причину этого исключения? Обычно они должны иметь одинаковый результат.
Greetz
Jonathan