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

#include 
#include 


#pragma comment(lib, "ws2_32") 


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


int main(int argc, char *argv[])
{
	if (argc != 2)
	{
		printf("命令格式:scanport.exe \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地址可以自行设置)

你可能感兴趣的:(C/C++程序设计,安全技术相关,网络编程相关)