Я испытываю очень странное поведение с методом Socket.Connect в C #. Я пытаюсь установить TCP Socket.Connect на действительный IP-адрес, но закрытый порт, и метод продолжается, как будто я успешно подключился. Когда я проанализировал, что происходит, я увидел, что приложение получало RST-пакеты с удаленной машины. Тем не менее из имеющейся трассировки ясно, что метод connect не вызывает исключение. Есть идеи, что может быть причиной этого?
Код, который работает в основном это
IPEndPoint iep =
new IPEndPoint(System.Net.IPAddress.Parse(m_ipAddress), m_port);
Socket tcpSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
tcpSocket.Connect(iep);
Чтобы добавить к тайне ... при запуске этого кода в автономном консольном приложении, результат, как и ожидалось - метод connect вызывает исключение. Однако при запуске его в развертывании службы Windows у нас метод connect не выдает исключение.
Редактировать в ответ на ответ Мистера Мана
Как проглотить исключение? У меня есть Trace.WriteLine прямо над методом .Connect и Trace.WriteLine прямо под ним (не показано в примере кода для удобства чтения). Я знаю, что оба следа работают. У меня также есть попытка поймать все это, что также делает Trace.Writeline, и я не вижу этого нигде в файлах журнала. Я также включил внутреннюю трассировку сокетов, как вы предложили. Я не вижу никаких исключений. Я вижу то, что, кажется, успешные связи.
Я пытаюсь определить различия между приложением службы Windows и приложением консоли диагностики, которое я сделал. У меня заканчиваются идеи, хотя
Конец редактирования
Спасибо