这个本来曾经也写过的,今天无聊复习下 再写一遍。简单的一塌糊涂,写的不咋地大家见谅哦!有空再加强 嘿嘿!
#include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <time.h> #include <sys/types.h> #include <netinet/in.h> #include <netdb.h> void msg() { printf("EP:scan ip startport endport/nEP:scan ip 127.0.0.1 20 2009/n"); } int main(int argc,char** argv) { char *ip; int startport,endport,sockfd,i; struct sockaddr_in to; float costtime; clock_t start,end; if(4!=argc) { msg(); return 0; } ip=argv[1]; startport=atoi(argv[2]); endport=atoi(argv[3]); if(startport<1 || endport>65535 || endport<startport) { printf("port范围出错/n"); return 0; } else printf("IP:%s %d-%d/n",ip,startport,endport); to.sin_family=AF_INET; to.sin_addr.s_addr=inet_addr(ip); start=clock(); for(i=startport;i<=endport;i++) { sockfd=socket(AF_INET,SOCK_STREAM,0); to.sin_port=htons(i); if(connect(sockfd,(struct sockaddr *)&to,sizeof(struct sockaddr))==0) { printf("%s %d/n",ip,i); close(to); } } end=clock(); costtime=(float)(end-start)/CLOCKS_PER_SEC; printf("用时:%f秒/n",costtime); return 0; }