- 论坛徽章:
- 0
|
本帖最后由 刘一痕 于 2010-07-10 14:32 编辑
#include <string.h>
#include <stdio.h>
#include <arpa/inet.h>
#define PORT 0
#define IP "192.168.0.84" //目标机IP
int scan(int port)
{
struct sockaddr_in clientaddr;
int sockfd = socket(AF_INET,SOCK_STREAM,0);
if(-1 == sockfd)
{
perror("socket return error in function main");
return -1;
}
memset(&clientaddr,0,sizeof(struct sockaddr_in));
clientaddr.sin_family = AF_INET;
clientaddr.sin_addr.s_addr = inet_addr(IP);
int number;
for(number = port;number<65535;number++ )
{
clientaddr.sin_port = htons(PORT+number);
if(0== connect(sockfd,(struct sockaddr *)&clientaddr,sizeof(struct sockaddr)))
{
printf("port %d open\n",number);
close(sockfd);
return number;
}
}
return -1;
}
int main(void)
{
int temp_i;
int ret;
for(temp_i = 0;temp_i < 65535; )
{
ret = scan(temp_i+1);
if(ret == -1 )
{
printf("scan end\n");
return 0;
}
else
{
temp_i = ret;
}
}
return 0;
}
上面的代码是我自己写的一段端口扫描代码,扫描目标机 192.168.0.84,结果却在scan函数中出现死循环 |
|