- 论坛徽章:
- 0
|
#include "unp.h"
#define MAXPORT 1000
int main(int argc,char **argv){
int sockfd,i,ret;
struct sockaddr_in servaddr;
char buf[1000];
if (argc != 2)
err_quit("usage: a.out <IPaddress>");
bzero(&servaddr, sizeof(servaddr));
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
err_quit("inet_pton error for %s", argv[1]);
printf("scan server %s\n",argv[1]);
for(i=1;i<MAXPORT;i++){
if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
err_sys("socket error");
servaddr.sin_family = AF_INET;
/// printf("conneting to port %d \n",i);
servaddr.sin_port = htons(i);
if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) >= 0)
{
printf("the server is %s\n",inet_ntoa(servaddr.sin_addr));
printf("port %d is open \n",i);
while((ret=read(sockfd,buf,sizeof(buf))>0)){
printf("read count : %d\n",ret);
printf("banner: \n %s",buf);
}
}
// printf("return %d\n",ret);
//
Close(sockfd);
}
exit(0);
}
~
~
~
| 执行返回值:
[email=sam@sam-desktop:~/unpv13e/example$]sam@sam-desktop:~/unpv13e/example$[/email] ./portscan2 127.0.0.1
scan server 127.0.0.1
the server is 127.0.0.1
port 13 is open
read count : 1
banner:
Fri Nov 30 15:21:34 2007
。
为什么read count是1.而实际返回的字符数显然不是1? |
|