Estaba haciendo un Escáner de puertos en C/C++, ya lo termine y sirve perfectamente, pero solo me escanea los puertos TCP, pero cuando quiero que me encane los puertos UDP, que es por datagramas yo pienso que solo tengo que cambiar de SOCK_STREAM a SOCK_DGRAM y listo ya es UDP, algunas funciones cambian lo se.
bueno hize el código y listo compilo y termine....
A la hora de probarlo O_O todos los puertos abiertos y creo que es un error jeje XD, porque con el TCP solo tenia como 4 abiertos, así que quiero que analicen el código y digamen si hay algun error en el..
Código:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/types.h>
#define FAMILIA AF_INET
#define PUERTO_INICIO 0
#define PUERTO_FIN 65535
int main(int argv,char *argc[]){
if(argc[1] == NULL){
printf("( Dirección Invalida )\n");
return -1;
}
struct sockaddr_in conectar;
conectar.sin_family = FAMILIA;
inet_aton ( argc[1] , &(conectar.sin_addr));
memset(conectar.sin_zero,0,8);
for(int i = PUERTO_INICIO ;i <= PUERTO_FIN ; i++ ){
int sock = socket( FAMILIA , SOCK_DGRAM , 0 );
conectar.sin_port = htons(i);
int Sconnect;
socklen_t tam;
tam = sizeof(sockaddr);
Sconnect = connect(sock, (sockaddr *)&conectar , tam);
if(Sconnect == -1){
//printf("%d - Cerrado \n",i);
}else{
printf("%d - Abierto \n",i);
}
close(Sconnect);
close(sock);
}
return 0;
}