91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-13
  • 語言: C/C++
  • 標簽: netstat??-an??

資源簡介

windows 中沒有提供給我們可用的netstat -an 的源碼,本人利用C++的函數實現了這一功能……

資源截圖

代碼片段和文件信息

#define?WIN32_LEAN_AND_MEAN
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#pragma?comment(lib?“Iphlpapi.lib“)
#pragma?comment(lib?“ws2_32.lib“)

static?char?TcpState[][32]?=?
{
“???“
“CLOSED“
“LISTENING“
“SYN_SENT“
“SEN_RECEIVED“
“ESTABLISHED“
“FIN_WAIT“
“FIN_WAIT2“
“CLOSE_WAIT“
“CLOSING“
“LAST_ACK“
“TIME_WAIT“
};

DWORD?EnumTCPTable()
{
PMIB_TCPTABLE?pTcpTable?=?NULL;
DWORD?dwSize?=?0;
DWORD?dwRetVal?=?ERROR_SUCCESS;

struct???in_addr?rip;
struct???in_addr?lip;
char??szrip[32]?=?{0};
char??szlip[32]?=?{0};

//獲得pTcpTable所需要的真實長度dwSize
if?(GetTcpTable(pTcpTable?&dwSize?TRUE)?==?ERROR_INSUFFICIENT_BUFFER)
{
pTcpTable?=?(MIB_TCPTABLE*)?malloc?((UINT)?dwSize);
}
else
return?dwRetVal;

printf(“Active?Connections\n\n“);
printf(“??Proto\t%-24s%-24s%s\n““Local?Address““Foreign?Address““State“);

if?((dwRetVal?=?GetTcpTable(pTcpTable?&dwSize?TRUE))?==?NO_ERROR)?
{
for?(int?i?=?0;?i?dwNumEntries;?i++)?
{
rip.S_un.S_addr?=?pTcpTable->table[i].dwRemoteAddr;
lip.S_un.S_addr?=?pTcpTable->table[i].dwLocalAddr;
//監聽端口,遠程主機端口為0,但函數返回是有值的,不知道它是怎么考慮的
if?(pTcpTable->table[i].dwState?==?MIB_TCP_STATE_LISTEN)???
pTcpTable->table[i].dwRemotePort?=?0;

//dwLocalPort,dwRemotePort?是網絡字節
_snprintf(szlipsizeof(szlip)“%s:%d“inet_ntoa(lip)htons((u_short)pTcpTable->table[i].dwLocalPort));
_snprintf(szripsizeof(szrip)“%s:%d“inet_ntoa(rip)htons((u_short)pTcpTable->table[i].dwRemotePort));
printf(“??TCP\t%-24s%-24s%s\n“szlipszripTcpState[pTcpTable->table[i].dwState]);
}
}
else
{
printf(“\tCall?to?GetTcpTable?failed.\n“);

LPVOID?lpMsgBuf;

if?(FormatMessage(?
FORMAT_MESSAGE_ALLOCATE_BUFFER?|?
FORMAT_MESSAGE_FROM_SYSTEM?|?
FORMAT_MESSAGE_IGNORE_INSERTS
NULL
dwRetVal
MAKELANGID(LANG_NEUTRAL?SUBLANG_DEFAULT)?//?Default?language
(LPTSTR)?&lpMsgBuf
0
NULL?))
{
printf(“\tError:?%s“?lpMsgBuf);
}
LocalFree(?lpMsgBuf?);
}
GlobalFree(pTcpTable);
return?dwRetVal;
}

DWORD?EnumUDPTable()
{
PMIB_UDPTABLE?pUdpTable?=?NULL;
DWORD?dwSize?=?0;
DWORD?dwRetVal?=?ERROR_SUCCESS;

// struct???in_addr?rip;
struct???in_addr?lip;
// char??szrip[32]?=?{0};
char??szlip[32]?=?{0};

//獲得pUdpTable所需要的真實長度dwSize
if?(GetUdpTable(pUdpTable?&dwSize?TRUE)?==?ERROR_INSU

評論

共有 條評論