#include<stdio.h>
#include<string.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/signal.h>
#define MAXbUFFER 100
#define PORTtCP 8145
int fdSocket, fdClie, nread,fdmax;
char buffer[MAXbUFFER];
struct sockaddr_in cliente;
struct hosten *host;
socklen_t tamSocket;
void handler_sigchld (int);
int main(void){
int i,j,puerto,addrlen,socktcp;
struct timeval tv;
fd_set serverset;
signal(SIGCHLD,handler_sigchld);
puerto=8000;
addrlen=sizeof(struct sockaddr);
for(j=1;j<650;j++)
{
printf("\nScanneados %d primeros rangos\n",puerto
); sleep(50);
for(i=0;i<100;++i)
{
puerto++;
if(!fork())
{ //en el hijo
socktcp=socket(AF_INET,SOCK_STREAM,0);
bzero(&cliente,addrlen);
cliente.sin_family=AF_INET;
// host=gethostbyname("silicon-valley.dyndns.org");
cliente.sin_addr.s_addr=inet_addr("127.0.0.1");
cliente.sin_port=htons(puerto);
tv.tv_usec=0;
tv.tv_sec=30;
FD_ZERO(&serverset);
FD_SET(socktcp,&serverset);
fdmax=socktcp;
select(fdmax+1,&serverset,NULL,NULL,&tv);
if(FD_ISSET(socktcp,&serverset))
{
if(connect(socktcp,(struct sockaddr *)&cliente,addrlen)!=-1)
printf("\nPuerto %d\n",puerto
); };
// cliente.sin_addr = *((struct in_addr *)host->h_addr);
// cliente.sin_addr.s_addr=*host.host->h_addr;
}
/*else{
}
*/
}
}
}
void handler_sigchld (int type)
{
int status_chld;
wait(&status_chld);
}