c # .net открытие внешнего порта TCP - PullRequest
1 голос
/ 17 февраля 2011

Я создал TCP-сервер, который я тестировал локально, и он прекрасно работает, и теперь я открыл порт на своем брандмауэре, но все еще не могу видеть порт снаружи.Я думаю, что это связано с конфигурацией моего сокета, как я могу это исправить?

        System.Net.IPHostEntry localhost = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());

        #region Bind Socket & Listen for connections, accepting Asynchronously

        System.Net.IPEndPoint serverEndPoint;

        try
        {
            serverEndPoint = new System.Net.IPEndPoint(localhost.AddressList[0], _port);
        }
        catch (System.ArgumentOutOfRangeException e)
        {
            throw new ArgumentOutOfRangeException("Port number entered would seem to be invalid, should be between 1024 and 65000", e);
        }

        try
        {
            //_serverSocket = new System.Net.Sockets.Socket(serverEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            //_serverSocket = new System.Net.Sockets.Socket(serverEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            //_serverSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _serverSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
        catch (System.Net.Sockets.SocketException e)
        {
            throw new ApplicationException("Could not create socket, check to make sure not duplicating port", e);
        }

        try
        {
            _serverSocket.Bind(new IPEndPoint(IPAddress.Any/*.Parse("127.0.0.1")*/, _port));//serverEndPoint);
            //_serverSocket.Bind(new System.Net.IPEndPoint(System.Net.Dns.GetHostEntry("localhost").AddressList[0],12345));
            _serverSocket.Listen(_backlog);
        }
        catch (Exception e)
        {
            throw new ApplicationException("Error occured while binding socket, check inner exception", e);
        }

        try
        {
            //warning, only call this once, this is a bug in .net 2.0 that breaks if 
            // you're running multiple asynch accepts, this bug may be fixed, but 
            // it was a major pain in the ass previously, so make sure there is only one 
            //BeginAccept running 
            _serverSocket.BeginAccept(new AsyncCallback(acceptCallback), _serverSocket);
        }
        catch (Exception e)
        {
            throw new ApplicationException("Error occured starting listeners, check inner exception", e);
        }

        #endregion

1 Ответ

0 голосов
/ 17 февраля 2011

Конфигурация сокета правильная - я не настроил переадресацию портов с использованием правильной подсети ip

...