Tcp-соединение целевой машины активно отказано


0

У меня есть простая программа клиент / сервер TCP на двух ноутбуках. Сервер должен работать нормально, так как я использую «netstat -anb», и сервер отображается как прослушивающий «0.0.0.0:102», затем мое клиентское соединение не удалось, с «192.168.10.5:102».

Порт должен совпадать, и для ip-адреса сервера я установил его на «0.0.0.0», поэтому он должен принимать любое соединение.

Когда я запускаю программу вместе на одном ноутбуке, она работает нормально. У меня проблемы с устранением неполадок. Я посмотрел пару сообщений, большинство из них предложили установить ip сервера на «0.0.0.0», что я и сделал. И "netstat -anb" показывает, что он слушает.

код на стороне клиента при подключении

    private void btnConnect_Click(object sender, EventArgs e)
    {
        client = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

        IPAddress ip = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];
        try
        {
            client.Connect(new IPEndPoint(ip, port));
        }
        catch(Exception ex) {
            MessageBox.Show("Connection failed");
            MessageBox.Show(ex.ToString());
            return;
        }
        this.Text = "Connected";
    }

Сторона сервера

    private void btnListen_Click(object sender, EventArgs e)
    {
        Invoke((MethodInvoker)delegate {
            statusLblOne.Text = "Listening..";
            return;
        });

        // establish connection with socket.
        server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        server.Bind(new IPEndPoint(0, port));
        server.Listen(0);

        // use <acceptStream> to accept data
        acceptStream = server.Accept();
        txtMessage.Enabled = true;

        // allocate a new thread for this acceptstream
        statusLblOne.Text = "Receiving data...";
        Thread th = new Thread(receiveData);
        th.Start();

        // close the listener socket
        server.Close();
    }

Я разместил код для подключения на оригинальный вопрос. В настоящий момент я был в замешательстве, я искал много постов в stackoverflow за помощью, но большинство из них сказали, что либо используют другой порт (0.0.0.0 должен работать), либо сервер не прослушивает (netstat показывает, что он слушает). Как мне подойти к этому? какую дополнительную информацию я могу предоставить для лучшей диагностики


Вы проверили, чтобы убедиться, что у вас не запущено программное обеспечение брандмауэра?
Спифф

Я читал, что Windows позволит вам настроить прослушиватель на портах ниже 1024, но будет отказывать в подключении к нему, если владелец прослушивателя не имеет привилегий. Можете ли вы попробовать порт 1020 и посмотреть, работает ли он? Linux даже не должен позволять вам создавать порт. Что это за ОС?
Пол

попробуйте 1020 и не удалось. это на окнах с помощью C #. Попробовать 1030 тоже не удалось.
Шихао Чжан

я выключил брандмауэр. Это все еще дает мне это активное сообщение об отказе.
Шихао Чжан

Если я запускаю его на той же машине, он работает нормально
Shihao Zhang
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.