web-dev-qa-db-fra.com

Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est normalement autorisée?

Je cherchais une solution sérieuse sur google et je n’obtiens que des solutions légitimes que je ne pense même pas avoir en rapport avec mon problème.

Pour une raison quelconque, j'obtiens cette erreur, alors que je ne démarre que TcpListner une fois, et quand + en cas d'échec j'arrête le serveur . Je ne l'obtiens vraiment pas . Voici mon code:

class Program
    {
        private static string ServerName = "";
        private static string UserName = "";
        private static string Password = "";
        private static string dbConnectionSring = "";
        private static X509Certificate adminCertificate;
        private  static byte[] readBuffer = new byte[4096];
        static void Main(string[] args)
        {
            Console.WriteLine("Please grant SQL Server access to the Admin Server:\n");
            Console.Write("Server Name: ");
            ServerName = Console.ReadLine();
            Console.Write("\nUser Name: ");
            UserName = Console.ReadLine();
            Console.Write("\nPassword: ");
            Password = PasswordMasker.Mask(Password);
            dbConnectionSring = SQLServerAccess.CreateConnection(ServerName, UserName, Password);
            adminCertificate = Certificate.GenerateOrImportCertificate("AdminCert.pfx", "randomPassword");
            try
            {
                Console.WriteLine("Initializing server on the WildCard address on port 443...");
                TcpListener listener = new TcpListener(IPAddress.Any, 443);
                try
                {
                    Console.WriteLine("Starting to listen at {0}: 443...", IPAddress.Any);

                    //the backlog is set to the maximum integer value, but the underlying network stack will reset this value to its internal maximum value
                    listener.Start(int.MaxValue);
                    Console.WriteLine("Listening... Waiting for a client to connect...");
                    int ConnectionCount = 0;

                    while (true)
                    {
                        try
                        {

                            listener.BeginAcceptTcpClient(new AsyncCallback(AcceptCallback), listener);
                            ConnectionCount++;
                            Console.WriteLine(
                                " Accepted connection #" + ConnectionCount.ToString());


                        }
                        catch (SocketException err)
                        {
                            Console.WriteLine("Accept failed: {0}", err.Message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Listening failed to start.");
                    listener.Stop();

                    Console.WriteLine(ex.Message);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Initialiazing server Failed.");
                Console.WriteLine(ex.Message);
            }
        }

J'apprécierai vraiment ton aide!

4
WeinForce
  1. J'ai ouvert CMD et tapé dans: netstat -a
  2. J'ai jeté un coup d'œil dans la colonne Adresse locale.
  3. J'ai jeté un coup d'œil à la partie du port.
  4. J'ai vu que le port de mon programme est déjà actif (en cours d'utilisation) dans un autre programme.
  5. J'ai changé mon port dans mon programme pour autre chose.

    Ça a marché!

    Un grand merci à: @DavidSchwartz, @Gusman

10
WeinForce
  1. Ouvrir cmd
  2. Type netstat –ano 
  3. La liste des processus avec leurs ports sera ouverte 
  4. Rechercher «ID de processus» du port que vous ne pouvez pas utiliser (dans mon cas, port 11020)
  5. Ouvrez le gestionnaire de tâches et arrêtez ce processus
  6. Votre port est maintenant prêt à être utilisé :) 
1
harpreet singh