Recientemente me propuse aprender a programar o mejor dicho usar las FLAGS TCP en windows pero todo lo que consigo sobre esto es mas que todo orientado a linux, un ejemplo que conseguí en un tutorial es este /* connect.c */
#include<stdio.h>
#include<netinet/in.h>
#include<netdb.h> /* gethostbyname() */
#include<sys/types.h>
#include<sys/socket.h>
main(int argc, char **argv)
{
struct sockaddr_in target;
struct hostent *target_name;
int socket_fd; /* descriptor del socket */
if(argc!=3)
exit(printf("Uso: %s host|ip puerto\n",argv[0]));
target_name=gethostbyname(argv[1]); /*estructura hostent*/
/* ESTRUCTURA sockaddr_in A QUIEN QUEREMOS SCANNEAR */
target.sin_family=AF_INET;
target.sin_addr=*((struct in_addr *)target_name->h_addr);
target.sin_port=htons(atoi(argv[2]));
bzero(&(target.sin_zero),8);
/* FIN DEL LLENADO DE LA ESTRUCTURA sockaddr_in */
socket_fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
/* Si logramos conectar al puerto de nuestro objetivo, imprime PUERTO ABIERTO, si no... */
if((connect(socket_fd,(struct sockaddr *)&target,sizeof(target)))!=-1)
printf("Puerto %s Abierto\n",argv[2]);
else
printf("Puerto %s Cerrado\n",argv[2]);
close(socket_fd);
return 0;
}
leei en otras partes y dicen que tengo que usar las librerías winsock.h & winsock2.h pero la verdad cada ves que lo ago me da error y no es porque no esten bien linkiadas las cabeceras :/
a el ejemplo es para ver que puertos están abiertos local mente.