Cómo utilizar el método Socket para comprobar si un determinado puerto está abierto en MFC
1. Agregue un archivo de biblioteca ws2_32.lib al proyecto
struct ThreadParam
{
int iPort; /p> p>
int a,b,c,d; //valor de ip
};
UINT TestPost(LPVOID pParam)
{ p>
char ip[16];
int iPort = ((ThreadParam *)pParam)->iPort;
sprintf (ip,"%d. %d. %d.%d",
((ThreadParam *)pParam)->a,
((ThreadParam *)pParam)->b,
((ThreadParam *)pParam)->c,
((ThreadParam *)pParam)->d
SOCKET WinSocket;
struct sockaddr_in local_sin ;
local_sin.sin_family = AF_INET;
local_sin.sin_port = htons(iPort);
local_sin.sin_addr.s_addr = inet_addr(ip) ;
p>printf( "puerto de escaneo de estratificación %d en %s. . . \n",iPort,ip);
if((WinSocket=socket(AF_INET,SOCK_STREAM ,0))= =INVALID_SOCKET)
{
printf("Error al asignar el socket. Error: %d \n",WSAGetLastError()
); }
else
{
if((connect(WinSocket,(struct sockaddr *)&local_sin,sizeof(local_sin)))==0) p>
{
printf("%s puerto %d está abierto. \n",ip,iPort);
}
else
printf("%s el puerto %d no está abierto. \n",ip,iPort);
}
}
closesocket(WinSocket);
devuelve 0;
}