VC++常用功能封装代码一系列文章与源码 (欢迎订阅,持续更新...)
https://blog.youkuaiyun.com/kaizi318/article/details/108846326
//遍历本地tcp端口 是否被占用
bool CiServerCfgDlg::CheckPortIsOccupy(DWORD dwPort)
{
PMIB_TCPTABLE pTcptable;
pTcptable = (MIB_TCPTABLE*)malloc(sizeof(MIB_TCPTABLE));
DWORD dwsize=sizeof(MIB_TCPTABLE);
if (GetTcpTable(pTcptable, &dwsize, 2) == ERROR_INSUFFICIENT_BUFFER)
{
free(pTcptable);
pTcptable = (PMIB_TCPTABLE)malloc(dwsize);
}
if (GetTcpTable(pTcptable, &dwsize, 2) == NO_ERROR)
{
for (int i=0; i<(int)pTcptable->dwNumEntries; i++)
{
DWORD port = ntohs(pTcptable->table[i].dwLocalPort) ;
if (port == dwPort)
{
return true ;
}
}
}
free(pTcptable);
return false;
}