Gane 100 puntos por escribir código de escaneo de puertos de Linux en C
#include lt; sys/socket.hgt
#include lt; lt;arpa/inet.hgt;
#include lt;unistd.hgt;
#include lt;errno.hgt;
#include lt;unistd .hgt;
#include lt;errno.hgt;
#include lt;netdb.hgt;
#include lt;stdio.hgt; p>
p>
#include lt;string.hgt;
#include lt;string.hgt;
#include lt;arpa/internet.hgt;
#include lt;libxml/parser.hgt;
#include lt;libxml/tree.hgt;
#define VERDADERO 1
#define FALSO 0
#define UDP "UDP"
#define TCP "TCP"
#define tcp "tcp"
#define udp "udp"
typedef struct _GsSockStru{
int fd;
int len;
struct sockaddr_in addr;
}GsSockStru;
static int tcptest(char ip[32], char puerto[20]);
static int udptest(char ip[32] , puerto char[20] ]);
void sig_alrm( int signo
static GsSockStru test_sock
int
main; ( int argc, char* * argv)
{
cadena de caracteres[64]
puerto de caracteres[20]; char pro[20];
char ip[32];
int res
int i = 0
int k; = 0;
if( argcgt; 2 || argclt; 2 )
{
printf("卙四暟涓嶆? ¿Confirmar? -1\n");
return ( -1 );
}
strcpy( cadena, argv[1]);
while( *string )
{
if( string[i] == ':' )
break
pro[k] = cadena[i];
k
i
>
}
pro[k] = '\0';
i
k = 0
mientras ( *cadena )
{
> if( cadena[i] == ':
romper;
ip[k] = cadena[i];
k
i;
}
ip[k] = '\0';
i;
k=0;
p> mientras( *cadena )
{
si( cadena[i] == '\0')
ruptura;
puerto[k] = cadena[i];
k;
i
}
puerto[ k] = '\0';
i
memset( amp; test_sock, 0, sizeof( test_sock ) );
if ( ( strcmp( TCP, pro) != 0 )amp;amp; ( strcmp( UDP, pro) != 0 )amp;amp; ( strcmp(TCP, pro) ! = 0 )amp; ( strcmp( UDP, pro ) ! = 0 ))
{
printf ( "卙傛暟涓嶆? ¿Confirmación?\);