
还待优化。。。
#include <string.h>
#include <WinSock.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, _TCHAR* argv[]) {
int i=;
int portArr[]={,,,,,,,,,,,,,,,,,,,,,,,,,,};
int portArrLen=sizeof(portArr)/sizeof(portArr[]);
//初始化Windows Sockets 动态
WSADATA wsaData;
if(WSAStartup(MAKEWORD(,),&wsaData)!=) {
printf("找不到可使用的WinSock dll!\n");
return ;
} SOCKET sClient = NULL;//Linux 中ocket为 int类型 struct sockaddr_in addrServ;//套接字地址结构
addrServ.sin_family=AF_INET;
addrServ.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//对本机进行扫描 for (i = ; i<portArrLen; i++) { addrServ.sin_port=htons(portArr[i]);//设置端口
sClient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//赋值套接字 //连接服务器, 若connect失败则该套接字不可再用,必须关闭
if( (connect(sClient,(struct sockaddr_in *)&addrServ,sizeof(addrServ))) ==) {
printf("%d pen!\n",portArr[i]);
}else{
printf("%d not pen!\n",portArr[i]);
}
//无论是否连接成功,我们都关闭套接字
closesocket(sClient);
sClient=NULL;
}
puts("扫描结束!");
getchar();
//终止Winsock 2 DLL (Ws2_32.dll) 的使用.
WSACleanup();
return ;
}