简易完整端口扫描控制台程序(C语言实现)

前言:
这是我用C写的第一个网络编程,好像是从我以前看到的一个博客上看的原型改了改,没有找到那篇文章,但是回想一下我当时的编程水平……额-_-,还是乱设个转载吧

#include<stdio.h>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32")
#define START 79 //起始端口
#define END 1025 //终止端口
int main(int argc,char *argv[])
{
	if(argc!=2)
	{
		printf("Usage:scanport<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;
}

使用

exe文件路径 IP地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值