1 #include <sys/socket.h> 2 #include <sys/types.h> 3 #include <unistd.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 #include <netdb.h> 8 9 int main(int argc,char *argv[]) 10 { 11 int tar_socket=socket(AF_INET,SOCK_STREAM,0); 12 struct sockaddr_in tar_sockaddr; 13 int taraddr_len=sizeof(tar_sockaddr); 14 int port; 15 struct servent *tar_serv; 16 bzero(&tar_sockaddr,taraddr_len); 17 if(4!=argc) 18 { 19 printf("Usage:%s ip startport endport\n",argv[0]); 20 exit(1); 21 } 22 tar_sockaddr.sin_family=AF_INET; 23 tar_sockaddr.sin_addr.s_addr=inet_addr(argv[1]); 24 for(port=atoi(argv[2]);port<=atoi(argv[3]);port++) 25 { 26 tar_sockaddr.sin_port=htons(port); 27 if(!connect(tar_socket,(struct sockaddr*)&tar_sockaddr,taraddr_len))/*如果连接成功*/ 28 { 29 tar_serv=getservbyport(htons(port),NULL);/*取得端口对应服务信息*/ 30 printf("port: %d serv: %s open!\n",port,tar_serv->s_name); 31 } 32 else/*如果连接失败*/ 33 { 34 printf("port: %d close!\n",port); 35 } 36 } 37 close(tar_socket); 38 return 0; 39 }