New tcpclient().connected выдает нулевую ссылку
Эй,
Я написал на заказ "проверку задержки". Есть клиент и сервер. Клиент-это консольное приложение, а служба-это служба. Я ограничен .Net 3.5.
Так что все это работает локально нормально, но на главном сервере клиентов выдает ошибку:
while (!client.Connected && retry-- > 0)Нулевое исключение, справ
at TcpClient.Get_Connected (указывает на строку выше)
Я ничего не понимаю. Я только что создал его экземпляр. Самое большее, что она может быть закрыта.
вот код для этого метода.
private int GetPort(long taskLength, bool isReport = false) { IPEndPoint endPoint = new IPEndPoint(_address, _port); TcpClient client = new TcpClient(); int port = 0; int retry = retries; while (!client.Connected && retry-- > 0) { try { client.Connect(endPoint); using (var stream = client.GetStream()) using (StreamReader reader = new StreamReader(stream)) using (StreamWriter writer = new StreamWriter(stream)) { writer.AutoFlush = true; if (isReport) { writer.WriteLine($"report:{taskLength}"); } else { writer.WriteLine($"port request:{taskLength}"); } string portString = reader.ReadLine(); if (!string.IsNullOrEmpty(portString) && int.TryParse(portString, out port)) return port; throw new BadResponseException("Port format incorrect"); } } catch (BadResponseException) { //retry } catch (SocketException) { //retry } finally { client.Close(); } } return port; }Для первого звонка:
taskLength = 1
и isReport = false
.Любые идеи о том, что могло бы вызвать это, помогли бы ^_^
Спасибо
Что я уже пробовал:
Я протестировал клиент и сервер локально, и сервер работает как локально для него. Это первый тест, прежде чем я помещу клиента на другую машину.
Сервер имеет 1 порт, открытый для запросов от клиентов. Он открывает асинхронный порт, настраивает его на получение определенного количества байтов и отвечает, что это номер порта.
У меня есть только 1 клиент, работающий с банкоматом, который является однопоточным.