#include<stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib,"ws2_32")
#pragma warning (disable:4786)
int scan(char *ip,int starport,int endport)
{
//端口合法性判断
if(starport<1||starport>65535||endport<1||endport>65535)
{
printf("端口超出范围");
return -1;
}
if(starport>endport){
printf("起始端口不能高于结束端口\n");
return -1;
}
printf("扫描开始\n");
int i=0;
//初始化套接字
WORD sockVersion = MAKEWORD(2,2);
WSADATA wsaData;
if(WSAStartup(sockVersion, &wsaData)!=0)
{
return -1;
}
for(i=starport;i<=endport;i++){
struct sockaddr_in clientaddr; //创建用户
clientaddr.sin_family=AF_INET;
clientaddr.sin_addr.s_addr=inet_addr(ip); //用户地址
clientaddr.sin_port=htons(i); //用户端口
//创建套接字
int sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("错误:不能创建 socket\n");
return -1;
}
//连接
int error=connect(sock,(struct sockaddr*)&clientaddr,sizeof(clientaddr));
if(error<0){
printf("端口:%5d | 状态:关闭\n",i);
fflush(stdout);//清空缓存
}
else{
struct servent* sptr;
if((sptr=getservbyport(htons(i),"tcp"))!=NULL)
printf("端口:%5d | 服务:%s | 状态:open\n",i,sptr->s_name);
else
printf("端口:%5d | 状态:open\n",i);
}
closesocket(sock); //关闭套接字
}
return 1;
}
int main()
{
int starport,endport;
printf("------------------------------\n");
printf("| 欢迎使用端口扫描器 |\n");
printf("-------------------------------\n");
char *ip=(char *)malloc(sizeof(char));
printf("请输入要扫描的ip地址\n");
scanf("%s",&ip);
printf("请输入起始端口\n");
scanf("%d",&starport);
printf("请输入结束端口\n");
scanf("%d",&endport);
scan("ip",starport,endport);
return 0;
}
tcp.zip_connect_tcp_tcp 握手
版权申诉
191 浏览量
2022-09-23
19:04:45
上传
评论
收藏 1KB ZIP 举报
刘良运
- 粉丝: 66
- 资源: 1万+
最新资源
- sony 索尼IMX334摄像头模组电路板AD版硬件PCB图(6层板).zip
- 基于flask和echarts融合交易策略的bitfinex可视化微服务.zip
- 包含了wvp-assist.tar wvp-talk.tar zlmediakit.tar .
- 3r4efgh53wgrf43tw
- 2024新版Java基础从入门到精通全套视频+资料下载
- Spring AI大模型视频教程+ChatGPT视频教程+OpenAI大模型视频教程(资料+视频教程)
- ABB工业机器人教程PDF版本
- 123321123323211
- yolov8实战第八天-pyqt5-yolov8实现车牌识别系统(论文(8700+字+数据集+完整部署代码+代码使用说明)
- 三相桥式全桥整流电路MATALB Simulink仿真文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈