64,654
社区成员
发帖
与我相关
我的任务
分享
//调用辅线程来循环扫描每个端口
DWORD WINAPI psProc(
LPVOID lpParameter // thread data
)
{
//创建套接字
SOCKET psSock = socket ( AF_INET, SOCK_STREAM, 0 ); //返回值为类似于文件描述符的句柄;
//sockaddr_in结构
struct sockaddr_in psAddr;
if( psSock == INVALID_SOCKET )
{
printf( "Error: socket \n" );
exit(1);
}
//将psAddr中的前sizeof( psAddr )个字符都替换成0
memset( &psAddr, 0, sizeof( psAddr ) );
//填充sockaddr结构
psAddr.sin_family = AF_INET; //表示所属地址簇,TCP/IP必须是AF_INET
psAddr.sin_addr.S_un.S_addr = inet_addr( g_szTargetIP );
psAddr.sin_port = htons( g_nTargetPort );
//是不是connect()的问题??
if( connect( psSock, ( sockaddr* )&psAddr, sizeof( psAddr ) ) != SOCKET_ERROR )
{
printf( "\n端口 %d 开放", ntohs( psAddr.sin_port) );
nPortNumber++; //扫描出的端口数目统计
}
//关闭监听套接字
closesocket( psSock );
return 0;
}