实现简单的端口连接程序C/C++
程序原理:
当指定了需要扫描的IP地址和端口信息后,程序便创建一个Socket,然后向指定的IP地址和端口发起建立连接的请求,如果能成功建立连接,则说明该端口处于工作状态,否则说明端口已经被关闭无法建立连接。
程序源码:
/*
*简单的端口扫描程序
*/
#include<stdio.h>
#include<Winsock2.h>
#pragma comment(lib , "ws2_32.lib")
typedef unsigned int UINT ;
/*
*进行端口连接的测试
*/
bool testConnection(char *IP , UINT nPort) ;
/*
*测试主函数
*/
int main()
{
//初始化WinSock
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
if(WSAStartup(wVersionRequested,&wsaData) != 0)
{
printf("初始化WinSock失败!\n") ;
return 0 ;
}
char IP[20] , nPort ;
printf("Please input scan Port and IP : " ) ;
scanf("%d %s" , &nPort , IP) ;
//进行连接的测试
if(testConnection(IP , nPort))
{
printf("端口连接成功 !\n") ;
}
else
{
printf("端口连接失败!\n") ;
}
return 0 ;
}
/*
*进行端口连接的测试
*/
bool testConnection(char *IP , UINT nPort)
{
SOCKET pSocket ;
sockaddr_in addr ;
pSocket = socket(PF_INET , SOCK_STREAM , IPPROTO_TCP) ;
if(pSocket == INVALID_SOCKET)
{
printf("创建Socket失败!\n") ;
return false ;
}
addr.sin_family = AF_INET ;
addr.sin_port = htons(nPort) ;
addr.sin_addr.s_addr = inet_addr(IP) ;
if(connect(pSocket , (SOCKADDR*)&addr , sizeof(addr)) == SOCKET_ERROR)
{
return false ;
}
return true ;
}

浙公网安备 33010602011771号