AcceptCallback не вызывается при прослушивании клиента

Рейтинг: -1Ответов: 1Опубликовано: 14.07.2023

У меня проблема в проекте типа Windows Application на .NET Framework 2.0 (VS2008)
Суть проблемы в том, что клиент не отвечает на прослушивание. Тем не менее существует проект, аналогичный в части алгоритмов работы с TCP\IP и у него абсолютно тот же клиент для прослушивания. Пытался в отладке проследить в чем различия конфигураций рабочего проекта, и моего проблемного проекта, прослеживал состояния сокета, между проектами отличается только свойство Handle. К клиентской части вопросов нет и не должно быть, так как клиент работает спокойно на рабочем варианте проекта. Может ли быт дело связано с Защитником Windows?
Ниже описываю свои шаги в коде:
Вызываю метод StartListening() для того, чтобы клиент присоединился ко мне

public void StartListening()
        {
            // Data buffer for incoming data.
            byte[] bytes = new Byte[256];

            // Establish the local endpoint for the socket.
            // The DNS name of the computer
            // running the listener is "host.contoso.com".
            IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress ipAddress = ipHostInfo.AddressList[2];
            IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port);  //Формируется корректный {ip:port}
            // Create a TCP/IP socket.
            SetTCPState("Create socket");
            listener = new Socket(AddressFamily.InterNetwork,
                            SocketType.Stream, ProtocolType.Tcp);

            // Bind the socket to the local endpoint and listen for incoming connections.
                listener.Bind(localEndPoint);
                listener.Listen(1);
                    // Start an asynchronous socket to listen for connections.
                    SetTCPState(string.Format("TCP: Waiting for a connection on port {0}...", port));
                    listener.BeginAccept(
                        new AsyncCallback(AcceptCallback),
                        listener);
        }

После чего ожидаю реакции от клиента, жду срабатывания триггера AcceptCallback

public void AcceptCallback(IAsyncResult ar)
        {
            // Get the socket that handles the client request.
            Socket listener = (Socket)ar.AsyncState;
            Socket handler = listener.EndAccept(ar);

            // Create the state object.
            StateObject state = new StateObject();
            state.workSocket = handler;
            try
            {
                SetTCPState("TCP: Accept. Start listening");
                handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                    new AsyncCallback(ReadCallback), state);
                
                SetTCPState(string.Format("TCP: Waiting for a connection on port {0}...", port));
                listener.BeginAccept(
                    new AsyncCallback(AcceptCallback),
                    listener);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

Ответы

▲ 0Принят

Добавление приложения в исключение брандмауера Windows решило проблему