). Сегодня я столкнулся с некоторыми проблемами с TcpListener. Вещи странные. Первоначально я использовал новый конструктор TcpListener (port), но он был помечен как устаревший. Поэтому я бросил его и использовал вместо этого:
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, ServerPort);
TcpListener tcpServer = new TcpListener(ipLocalEndPoint);
_TCPClient = tcpServer.AcceptTcpClient();
GotClient();
Конечно, я делаю это в потоке, чтобы оно не блокировало приложение. Теперь, что происходит, это то, что, хотя ipAddress правильный, сервер НИКОГДА не принимает ЛЮБОЕ входящее соединение.
ОДНАКО , переход на новый IPEndPoint (IPAddress.Any, ServerPort), кажется, делает свое дело! Что глупо двумя способами:
2 часа назад, IPAddress.Any возвратил 192.168.1.102, который является моим правильным локальным IP. Это тот же IP, который был в ipAddress! Но с ipAddress он не работал, а с IPAddress. Любой работал (то есть успешно принимал соединения от моего клиента).
Прямо сейчас: IPAddress.Any возвращает 0.0.0.0 (!? ), в то время как переменной ipAddress по-прежнему назначается мой правильный IP-адрес (192.168.1.102). Результат? Мой клиент по-прежнему не может подключиться при использовании ipAddres, но подключается при использовании IPAddress.Any, даже если это 0.0.0.0.
Я полностью озадачен этим ... Есть мысли?
В настоящее время у меня есть это в Form_HandleCreated, но это было странно, когда я это делал и в конструкторе Form.
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: Я думаю, что ошибаюсь насчет IP-адреса. Любое возвращение 192.168.1.102. Я, вероятно, распечатал что-то еще, так как многие из вас указали, что 0.0.0.0 - это то, что должно вернуться. Извините :: - Д.