简单的端口扫描控制台程序源码

#include <stdio.h>
#include <winsock2.h>


#pragma comment(lib, "ws2_32") 


#define START 80		//起始端口
#define END 1025		//终止端口


int main(int argc, char *argv[])
{
	if (argc != 2)
	{
		printf("命令格式:scanport.exe <IP>\n") ;
		return 0 ;
	}
	int i ;
	WSADATA ws ;
	SOCKET	sockfd ;
	struct sockaddr_in their_addr ;
	WSAStartup(MAKEWORD(2, 2), &ws) ;
	their_addr.sin_family = AF_INET ;
	their_addr.sin_addr.S_un.S_addr = inet_addr(argv[1]) ;
	//根据命令参数确定扫描IP
	for (i = START; i <= END; i++)
	{
		//循环建立socket后连接
		sockfd = socket(AF_INET, SOCK_STREAM, 0) ;
		their_addr.sin_port = htons(i) ;
		printf("正在扫描端口:%d\n", i) ;
		if (connect(sockfd, (struct sockaddr*)&their_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
		{
			continue ;				//如果连接失败,则直接进行下一个端口的扫描
		}
		//否则认为此端口开放
		printf("\n\t端口 %d 开放!\n\n", i) ;
	}
	closesocket(sockfd) ;
	WSACleanup() ;


	return 0 ;
}


编译、链接后生成Release版本的可执行程序,并将可执行程序改名为scanport.exe


打开DOS命令行窗口,进入存放scanport.exe的目录文件夹


执行scanport.exe 127.0.0.1  (此处的IP地址可以自行设置)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值