怎样实现本机的端口分析?像WINDOWS优化大师一样,报告所有端口的状态,连接对象

cnss 2001-08-05 01:01:58
windows优化大师有一个功能挺好,就是“本地端口分析”,它能把所有活动中的端口列出来,像这样:
本地端口 协议 远程主机 远程端口 状态
1767 TCP 64.12.25.12 5290 已建立
7626 TCP 0.0.0.0 0 监听
..............
..............

请问怎样实现这个功能?

如果很麻烦,我会不断加分的
...全文
1914 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmpp 2001-12-21
  • 打赏
  • 举报
回复
Private Sub Timer_Timer(Index As Integer)
Dim Tmp$
Select Case WinSock(Index).State
Case sckClosed
Tmp$ = "关闭"
Case sckOpen
Tmp$ = "打开"
Case sckListening
Tmp$ = "侦听"
Case sckConnectionPending
Tmp$ = "连接挂起"
Case sckResolvingHost
Tmp$ = "识别主机"
Case sckHostResolved
Tmp$ = "已识别主机"
Case sckConnecting
Tmp$ = "正在连接"
Case sckConnected
Tmp$ = "正在通信中..........."
Case sckClosing
'-------------------------
Tmp$ = "对方主动关闭连接"
Case sckError
Tmp$ = "测试网关(ISMG)未知错误,请稍后再试........"
End Select
'If Trim(Text1.Text) <> Tmp$ Then AddMsg Tmp$

End Sub
duhualin 2001-09-18
  • 打赏
  • 举报
回复
gz
tegger 2001-08-17
  • 打赏
  • 举报
回复
请问iamshuke兄:
你的IN_ADDR remoteAddr;
PMIB_TCPTABLE pTcpTable;;
MIB_TCPROW tab
结构从什么地方来的MSDN上没有呀


changxing 2001-08-10
  • 打赏
  • 举报
回复
误会了,我的程序与题目不符,抱歉!
changxing 2001-08-10
  • 打赏
  • 举报
回复
这样就是慢点,来个多线程的就快多了。
changxing 2001-08-10
  • 打赏
  • 举报
回复
扫描自己的端口呗
用java写的

public class portscan {
public static void main(String[] arg) {
portscan scan = new portscan();
scan.go(arg[0]);
}

public void go(String url) {
Socket socket;
for(int x = 0; x < 1024; x++) {
try {
socket = new Socket(url,x);
System.out.println("port "+x+" ok");
socket = null;
}
catch(Exception e) {
System.out.print("port "+x+"\r");
}
}
}
}
XXLong 2001-08-09
  • 打赏
  • 举报
回复
up
programlover 2001-08-09
  • 打赏
  • 举报
回复
NETSTAT
MICROSOFT WHITE PAGER 上有!
vericky 2001-08-09
  • 打赏
  • 举报
回复
listen
cnss 2001-08-07
  • 打赏
  • 举报
回复
to znsoft:

http://www.csdn.net/expert/topic/219/219723.shtm

在这里
znsoft 2001-08-07
  • 打赏
  • 举报
回复
up.帮帮我!!!!!!
znsoft 2001-08-07
  • 打赏
  • 举报
回复
我也不小心中了,增摸半?刀锋的程序在哪?
lili123 2001-08-07
  • 打赏
  • 举报
回复
去www.sysinternals.com看看,里面有个tcpview就是解决这个问题的,有源代码
iamshuke 2001-08-07
  • 打赏
  • 举报
回复
void TcpUdpLink::OnButton1()
{
// TODO: Add your control notification handler code here
char *state[13]={{"KNOW"},{"CLOSED"},{"LISTEN"},{"SYN_SENT"},{"SYN_RCVD"},
{"ESTAB"},{"FIN_WAIT1"},{"FIN_WAIT2"},{"CLOSE_WAIT"},{"CLOSING"},
{"LAST_ACK"},{"TIME_WAIT"},{"DELETE_TCB"}};
CString str,strTemp;
IN_ADDR localAddr;
IN_ADDR remoteAddr;
WORD dwLocalPort,dwRemotePort;
PMIB_TCPTABLE pTcpTable;
PMIB_UDPTABLE pUdpTable;
HMODULE hModule;
DWORD dwSize;
int i;
dwSize=0;
typedef DWORD (CALLBACK* GETTCPTABLE)(PMIB_TCPTABLE,PDWORD,BOOL);
typedef DWORD (CALLBACK* GETUDPTABLE)(PMIB_UDPTABLE,PDWORD,BOOL);
GETTCPTABLE GetTcpTable;
GETUDPTABLE GetUdpTable;
hModule=LoadLibrary("IPhlpapi.DLL");
if(hModule!=0){
GetTcpTable=(GETTCPTABLE)GetProcAddress(hModule,"GetTcpTable");
if(GetTcpTable!=NULL){
(*GetTcpTable)(NULL,&dwSize,FALSE);
if((pTcpTable=(PMIB_TCPTABLE)GlobalAlloc(GPTR,dwSize))==NULL)
{
AfxMessageBox("内存分配错误\n");
return;
}
if((*GetTcpTable)(pTcpTable,&dwSize,TRUE)!=NO_ERROR)
{
AfxMessageBox("Get error");
return;
}
MIB_TCPROW tab;
for(i=0;i<pTcpTable->dwNumEntries;i++){
tab=pTcpTable->table [i];
localAddr.s_addr =tab.dwLocalAddr ;
remoteAddr.s_addr =tab.dwRemoteAddr ;
dwLocalPort=tab.dwLocalPort ;
dwLocalPort=ntohs(dwLocalPort);
dwRemotePort=tab.dwRemotePort ;
dwRemotePort=ntohs(dwRemotePort);
if(tab.dwRemoteAddr ==0)dwRemotePort=0;
strTemp.Format ("TCP:%s:%d---",
inet_ntoa(localAddr),dwLocalPort);
str+=strTemp;
strTemp.Format ("%s:%d %s\n",
inet_ntoa(remoteAddr),dwRemotePort,
state[tab.dwState]);
str+=strTemp;
}
}
dwSize=0;
GetUdpTable=(GETUDPTABLE)GetProcAddress(hModule,"GetUdpTable");
if(GetUdpTable!=NULL){
(*GetUdpTable)(NULL,&dwSize,0);
if((pUdpTable=(PMIB_UDPTABLE)GlobalAlloc(GPTR,dwSize))==NULL)
{
AfxMessageBox("内存分配错误\n");
return;
}
if((*GetUdpTable)(pUdpTable,&dwSize,TRUE)!=NO_ERROR){
AfxMessageBox("Get UdpTable error");
return;
}
MIB_UDPROW utab;
for(i=0;i<pUdpTable->dwNumEntries;i++){
utab=pUdpTable->table [i];
dwLocalPort=utab.dwLocalPort ;
dwLocalPort=ntohs(dwLocalPort);
localAddr.s_addr=utab.dwLocalAddr ;
strTemp.Format ("UDP: %s:%d\r\n",
inet_ntoa(localAddr),dwLocalPort);
str+=strTemp;
}
}
FreeLibrary(hModule);
}
strTemp=m_Rich.GetText ();
if(str!=strTemp)
m_Rich.SetText (str);
GlobalFree(pTcpTable);
GlobalFree(pUdpTable);

}
cnss 2001-08-06
  • 打赏
  • 举报
回复
好了,用刀锋的程序干掉它了

谢谢大家啊
cnss 2001-08-06
  • 打赏
  • 举报
回复
完了完了!!我执行过它

现在好象还没发作,有什么办法杀了它吗?
NowCan 2001-08-06
  • 打赏
  • 举报
回复
源代码可用,但那个"网络例子.exe "绝对不能打开。
NowCan 2001-08-06
  • 打赏
  • 举报
回复
千万注意,http://go.163.com/nethief1t2/NetSample.zip里的那个exe文件是个病毒。我已深受其害,万万不可打开。
cnss 2001-08-05
  • 打赏
  • 举报
回复
to 111222(你行地!你一定要把少林功夫发扬光大..):
你的程序很好用地!我会给你分地。就等下面这位兄弟了

这是谁给我的信箱发的源码啊??请说出你的电子信箱,我好给分。

>源码下载:
>http://go.163.com/nethief1t2/NetSample.zip

>一定要记得给我分呀!
111222 2001-08-05
  • 打赏
  • 举报
回复
你说地这个好象就是netstat -a啊。

下面代码就是演绎你需要地东西地

http://vchelp.net/source/netstatp.zip
加载更多回复(8)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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