Ok antes que nada me gustaría mencionar lo que estoy haciendo es completamente ético y sí, estoy escaneando puertos.Tiempo de espera del socket en C++ Linux
El programa funciona bien cuando el puerto está abierto pero cuando llego a un socket cerrado el programa se detiene por un tiempo muy largo porque no hay una cláusula de tiempo de espera. A continuación se muestra el siguiente código
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"; }
}
He encontrado esto en desbordamiento de pila, sino que simplemente no tiene sentido para mí con un comando de select().
Pregunta: ¿Podemos hacer que el tiempo de espera de la función connect() no espere un año para que vuelva con un error?
No hay necesidad de explicar por qué lo necesita - es como pedir direcciones a banco y cada vez que explica que desea retirar dinero y no a robar .. – stefanB
: D bien puesto. pero no estoy retirando dinero: D –