请问怎么样可以判断出本机的某个端口是否被占用?

菲斯可儿 2004-04-09 08:25:38
例如,怎么样判断本机的7001端口是否已经被占用?
顺便问一下,如果一个socket在7001端口listen,那么其他的程序还能使用7001端口吗?
急用,请大家帮帮我,谢谢~
...全文
77 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengdj2002 2004-04-09
  • 打赏
  • 举报
回复
/*
#define MIB_TCP_STATE_IDLE 0
#define MIB_TCP_STATE_CLOSED 1
#define MIB_TCP_STATE_LISTEN 2
#define MIB_TCP_STATE_SYN_SENT 3
#define MIB_TCP_STATE_SYN_RCVD 4
#define MIB_TCP_STATE_ESTAB 5
#define MIB_TCP_STATE_FIN_WAIT1 6
#define MIB_TCP_STATE_FIN_WAIT2 7
#define MIB_TCP_STATE_CLOSE_WAIT 8
#define MIB_TCP_STATE_CLOSING 9
#define MIB_TCP_STATE_LAST_ACK 10
#define MIB_TCP_STATE_TIME_WAIT 11
#define MIB_TCP_STATE_DELETE_TCB 12
*/


STDMETHODIMP CCNetwork::GetPortState(ULONG nPort, ULONG *nStateID)
{

MIB_TCPTABLE TcpTable[100];

DWORD nSize = sizeof(TcpTable);
if(NO_ERROR == GetTcpTable(&TcpTable[0],&nSize,TRUE))
{
DWORD nCount = TcpTable[0].dwNumEntries;

if (nCount > 0)
{
for(int i=0;i<nCount;i++)
{
MIB_TCPROW TcpRow = TcpTable[0].table[i];

DWORD temp1 = TcpRow.dwLocalPort;
int temp2 = temp1 / 256 + (temp1 % 256) * 256;

if(temp2 == nPort)
{
*nStateID = TcpRow.dwState;
return S_OK;
}
}
}
return S_FALSE;
}

return S_FALSE;
}
菲斯可儿 2004-04-09
  • 打赏
  • 举报
回复
行了 成功了 谢谢两位!
菲斯可儿 2004-04-09
  • 打赏
  • 举报
回复
不行,错误参数都试了一遍,捕捉不到啊~
菲斯可儿 2004-04-09
  • 打赏
  • 举报
回复
尝试监听,好办法,试一下~
loseme915 2004-04-09
  • 打赏
  • 举报
回复
尝试监听,捕获失败结果就知道了!呵呵
Pipi0714 2004-04-09
  • 打赏
  • 举报
回复
你的端口假如被占用他监听的时候就会失败

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧