Socket-Timeout in C++, Linux

Ok, zuallererst möchte ich erwähnen, was ich mache, ist völlig ethische und ja, ich bin port-scanning.

Das Programm läuft gut, wenn der port offen ist aber, wenn ich zu einem geschlossenen sockel hält das Programm für eine sehr lange Zeit, weil es keine time-out-Klausel. Unten ist der folgende code

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"; }

}

Fand ich diese auf stack overflow aber es funktioniert einfach nicht sinnvoll, mich mit einem wählen Sie() Befehl.

Frage ist, können wir die connect () - Funktion timeout, damit wir nicht ein Jahr warten, bis es wieder mit einem Fehler?

  • Keine Notwendigkeit zu erklären, warum Sie es brauchen - es ist wie zu Fragen, für Anweisungen an die bank und jedes mal, zu erklären, dass Sie möchten, um Geld abzuheben und nicht, um es rauben ...
  • 😀 schön gesagt. aber nicht im Geld abheben 😀
Schreibe einen Kommentar