Хорошо, прежде всего я хотел бы упомянуть, что я делаю это совершенно этично, и да, я сканирую порт.
Программа работает нормально, когда порт открыт, но когда я добираюсь до закрытого сокета, программа останавливается на очень долгое время, потому что нет условия ожидания. Ниже приведен следующий код
int main(){
int err, net;
struct hostent *host;
struct sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(xxxx);
sa.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx");
net = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
err = connect(net, (struct sockaddr *)&sa, sizeof(sa));
if(err >= 0){ cout << "Port is Open"; }
else { cout << "Port is Closed"; }
}
Я обнаружил это при переполнении стека, но для меня это не имеет смысла, используя команду select () .
Вопрос в том, можем ли мы сделать тайм-аут функции connect (), чтобы не ждать год, чтобы он вернулся с ошибкой?