не может получить доступ к сокету из-за его разрешения - PullRequest
1 голос
/ 19 декабря 2011

Я использую C # с Visual Studio 2010 на Windows 7
, просто пытаюсь на простом примере сервера / клиента узнать о программировании сокетов примерно две недели, но затем вчера, когда я начал отладку, я получил это исключение (попыткабыл сделан для доступа к сокету способом, запрещенным его разрешением доступа).хотя я выключил брандмауэр и антивирус.плюс проверил вкладку безопасности и установил полное доверие.

Я прочитал много статей о том, что мы не можем использовать TCP на Windows 7, но он работал нормально!и это все еще работает, мне просто нужно перезагрузить компьютер.но перезапуск каждый раз, когда мне нужно запустить, не является решением.

какие-либо идеи ??

обновление:

static void Main(string [] args)
    {
        Program progDomain = new Program();
        progDomain.clients = new List<ClientManager>();

        if ( args.Length == 0 )
        {
            progDomain.serverPort = 8000;
            progDomain.serverIP = IPAddress.Any;
        }
        if ( args.Length == 1 )
        {
            progDomain.serverIP = IPAddress.Parse(args [0]);
            progDomain.serverPort = 8000;
        }
        if ( args.Length == 2 )
        {
            progDomain.serverIP = IPAddress.Parse(args [0]);
            progDomain.serverPort = int.Parse(args [1]);
        }

        progDomain.bwListener = new BackgroundWorker();
        progDomain.bwListener.WorkerSupportsCancellation = true;
        progDomain.bwListener.DoWork += new DoWorkEventHandler(progDomain.StartToListen);
        progDomain.bwListener.RunWorkerAsync();

        Console.WriteLine("*** Listening on port {0}{1}{2} started.Press ENTER to shutdown server. ***\n",progDomain.serverIP.ToString(),":",progDomain.serverPort.ToString());

        Console.ReadLine();

        progDomain.DisconnectServer();
    }

    private void StartToListen(object sender , DoWorkEventArgs e)
    {
        this.listenerSocket = new Socket(AddressFamily.InterNetwork , SocketType.Stream , ProtocolType.Tcp);
        this.listenerSocket.Bind(new IPEndPoint(this.serverIP , this.serverPort));
        this.listenerSocket.Listen(200);
        while ( true )
            this.CreateNewClientManager(this.listenerSocket.Accept());
    }

вот фрагмент кода, где срабатывает исключение.ничего особенного, так как он срабатывает с самого начала.

1 Ответ

1 голос
/ 19 декабря 2011

Как написано в комментариях, проверьте класс TcpListener .Этот класс делает вашу жизнь немного легче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...