#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<errno.h>
#include<stdio.h>
int main()
{
//定義循環變量
int I,j;
//定義一個套接字描述符
int sfd;
//定義一個套接字地址
struct sockaddr_in S_sockadd;
//定義一個ip地址
struct in_addr s_ip;
u_long ip;
char p[16];
//定義一個端口號
int port;
//我打算在這裏面開闢兩個大循環
/*主循環是ip地址
次循環是端口號
*/
//給定初始ip地址
p[16]="192.168.60.1";
inet_pton(AF_INET,p,&s_ip);
//初始端口號
port =1;
//把端口號轉爲網絡字節序
//初始化套接字
S_sockadd->sin.family =AF_INET;
S_sockadd->sin.port=htons(port);
S_sockadd->sin_addr=s_ip;
//創建一個socket
sfd=socket(AF_INET,SOCK_STREAM,0);
if(sfd==-1)
{
perror(socket error);
_exit(1);
}
else
{
for( I=1;I<=509;I++)
{
for(;port<=65535;port++)
{
//調用connect進行連接
int cr=connect (sfd,(struct sockaddr *)&S_sockadd,sizeof(S_sockadd));
if(cr!=-1)
{
printf("the host is open and :");
inet_ntop(AF_INET,&S_sockadd.sin_addr),&p,sizeof(S_sockadd.sin_addr);
printf("ip is : %s",p);
printf("port :%d",port);
printf("open \n");
}
printf("\n\n");
}
//當端口加1之後,IP地址要自動加1
ip=htonl(S_sockadd.sin_addr);
ip++;
s_ip=ntohl(ip);
S_sockadd.sin_addr=s_ip;
}
}
return 0;
}