#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/ip_icmp.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(int argc,char**argv)
{
int portnums;
int i;
int sockfd;
int res;
//char *openflag=NULL;
struct sockaddr_in dstaddr;
struct hostent *hostent;
if(argc!=3)
{
printf("usage main dstIP portnums!\n");
exit(1);
}
portnums=atoi(argv[2]);
if((hostent=gethostbyname(argv[1]))==NULL)
{
printf("gethostbyname fail!\n");
exit(1);
}
memset(&dstaddr,0,sizeof(struct sockaddr_in));
dstaddr.sin_family=AF_INET;
/*
memcpy(&(dstaddr.sin_addr),hostent->h_addr_list[0],sizeof(struct in_addr));
*/
if((res=inet_aton(argv[1],(struct in_addr*)(&dstaddr.sin_addr)))==0)
{
printf("inet_aton fail!\r");
exit(1);
}
/*
if((openflag=calloc(portnums,sizeof(char)))==NULL)
{
printf("calloc fail!\n");
exit(1);
}
*/
for(i=1;i<=portnums;i++)
{
if((sockfd=socket(AF_INET,SOCK_STREAM,0)<0))
{
printf("socket fail!\n");
exit(1);
}
dstaddr.sin_port=htons(i);
if((res=connect(sockfd,(struct sockaddr*)&dstaddr,sizeof(dstaddr)))<0)
{
/*
printf("the errno=%d,strerror=%s\n",errno,strerror(errno));
if(errno==ECONNREFUSED)
{
close(sockfd);
continue;
}
else
{
printf("connect port=%d fail!\n",i);
exit(1);
}
*/
//printf("port=%d not open\n",i);
close(sockfd);
continue;
}
//openflag[i-1]=1;
printf("open port=%d\n",i);
close(sockfd);
}
/*
printf("dst open port:\n");
for(i=0;i<portnums;i++)
{
if(openflag[i]==1)
{
printf("%d\n",i+1);
}
}
*/
printf("over!\n");
return 0;
}
评论0