netstat命令查看本地的端口被占用的情况

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ShiMengRan107/article/details/83151115

1、输入命令:netstat -ano,列出所有端口的情况。

2、查看指定端口的占用情况 ,输入命令:netstat -aon|findstr "14424",回车,记下最后一位数字,即PID,这里是14424。

展开阅读全文

怎样查看端口占用情况

05-17

我的目的是想通过程序来检查指定端口是不是被其他进程或服务占用。rnrn通过命令行netstat -ano可以查看端口情况,但想通过程序实现。rnrnrn通过上次在论坛看到的一种方案是:rn[code=C/C++]rnBOOL CommonTool::GetPortTCPState(USHORT uPort, DWORD& dwState)rnrn dwState = -1;rnrn WSADATA wsaData;rn WORD wVersionRequested = MAKEWORD(2, 2);rn int err = WSAStartup(wVersionRequested, &wsaData);rn if (err != 0)rn rn return FALSE;rn rn if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion != 2))rn rn WSACleanup();rn return FALSE;rn rnrn SOCKET s = socket(AF_INET, SOCK_STREAM, 0);rn SOCKADDR_IN addr;rn addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");rn addr.sin_family = AF_INET;rn addr.sin_port = htons(uPort);rn bind(s, (SOCKADDR*)&addr, sizeof(addr));rn listen(s, 5);rnrn PMIB_TCPTABLE pTcpTable = NULL; rn DWORD dwActualSize = 0;rn if (::GetTcpTable(pTcpTable, &dwActualSize, TRUE) == ERROR_INSUFFICIENT_BUFFER)rn rn pTcpTable = new MIB_TCPTABLE[dwActualSize];rn if (::GetTcpTable(pTcpTable, &dwActualSize, TRUE) == NO_ERROR)rn rn for (unsigned long i=0; idwNumEntries; i++)rn rn if (htons(uPort) == pTcpTable->table[i].dwLocalPort)//±¾µØ¶Ë¿Úrn rn dwState = pTcpTable->table[i].dwState;rn delete []pTcpTable;rn return TRUE;rn rn rn rn rnrn delete []pTcpTable;rn dwState = -1;rn rn return FALSE;rnrn[/code]rn但在实际运行时,发现输入任何端口(802),状态都是MIB_TCP_STATE_LISTEN.rn不知道是什么问题?rnrn另外,MSDN中dwState的值有很多,我不知道哪个表示被占用,貌似都有已被用了的意思。rnMIB_TCP_STATE_CLOSED "关闭状态"rnMIB_TCP_STATE_CLOSING "正在关闭"rnMIB_TCP_STATE_SYN_SENT "同步发送"rn....rnMIB_TCP_STATE_LISTEN "正在监听"rn等等。rnrn请问哪位比较清楚的了解怎么检测端口被占用。rn 论坛

没有更多推荐了,返回首页