Подскажите, пожалуйста, почему не работает код?
using System;
using System.Net.Sockets;
namespace ConsoleClient
{
    class Program
    {
        const string ip = "87.250.250.242";
        static void Main(string[] args)
        {
            int closedPort = 0;
            string path = @"c:\report.csv";
            System.IO.StreamWriter file = new System.IO.StreamWriter(path);
            try
            {
                TcpClient client = new TcpClient();
                for (int port = 1; port <= 65535; port++)
                {
                    closedPort = port;
                    client.Connect(ip, port);
                    Console.WriteLine("Open");
                    file.WriteLine($"{DateTime.Now}, {ip}, {port}, Open");
                    client.Close();
                }
            }
            catch (SocketException e)
            {
                Console.WriteLine("Close");
                file.WriteLine($"{DateTime.Now}, {ip}, {closedPort}, Close");
            }
        }
    }
}
Учебное задание, сканер портов, который пишет отчет в файл. Файл создается, но пустой, в него ничего не записывается. При попытке вывода на консоль пишет только "Closed" и все. Способов работы с файлами больше одного, но я выбрал тот, который посоветовал человек, который дал задание. Такое ощущение, что после ветки catch не происходит возврат в цикл. Как можно тогда сделать иначе? Нужно, чтобы в файл построчно писался отчет открыт ли порт (соединение установлено) или нет.  Может сделать это не через исключения, но я такого способа не нашел пока.