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 }