Как закрыть TCP-порта (сканер портов) / Qt ?

Доброго времени суток.
Есть у меня небольшой сканер портов, он сканирует диапазон портов и выводит результат (статус порта (открытый или закрытый )) в таблицу.

Никак не могу найти как закрыть TCP порт за указанным номером, может, кто-то знает как закрыть порт, или, может, есть какие-то идеи?

bool scan_port(QString ip,qint16 port)
{
    soket->disconnectFromHost();
    soket->connectToHost(ip,port);
    if (soket->waitForConnected(10))
        return true;
    else return false;
  // soket глобальная переменная
  //<code></code>память выделяется при старте 
  // освобождается  деструктором 
}


potrScaner.zip
  • Вопрос задан
  • 3458 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
shutdown + close?

Что бы закрыть какой-то порт, который использует не ваше приложение, нужно определить PID процесса, использующий этот порт, кильнуть его иии все... Далее все зависит от настроек соединения, которое использовал тот процесс (SO_REUSEADDR был установлен или нет) и операционной системы. В худшем случае даже после убийства процесса порт все еще будет висеть в режиме time-await какое-то время (связано с тем что в момент убийства у нас могут быть не пустыми буферы отправки/приема данных, и т.д.)
Ответ написан
ntkt
@ntkt
Потомственный рыцарь клавиатуры и паяльника
Мне кажется, Вы путаете локальные сокеты, которыми Вы управляете, и удаленные порты на другом хосте (другой машине). На другой машине их закрыть может только ПО на той самой машине, а Вы на своей -- нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы