端口扫描原理:用TCP去连接服务器,连接成功则该端口存在,否则不存在.
#include<WinSock2.h>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib")
bool PortScan(const char* ip, int port)
{
WSADATA wsdata;
SOCKET s;
SOCKADDR_IN destip;
WSAStartup(MAKEWORD(2, 2), &wsdata);
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
destip.sin_family = AF_INET;
destip.sin_addr.S_un.S_addr = inet_addr(ip);
destip.sin_port = htons(port);
int ret = connect(s, (SOCKADDR *)&(destip), sizeof(destip));
if (ret == SOCKET_ERROR)
{
return false;
}
closesocket(s);
WSACleanup();
return true;
}
int main()
{
if (PortScan("121.51.142.21", 80)) //www.qq.com
printf("121.51.142.21:80");
else
printf("Error");
return 0;
}