亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? netstat.c

?? netstat源代碼
?? C
字號(hào):
//------------------------------------------------------------
//
// Netstatp
//
// Copyright (C) 1998 Mark Russinovich
// Systems Internals
// http://www.sysinternals.com
//
// This program implements a subset of the Netstat program's
// functionality. Specifically, it enumerates and displays
// information about all UDP and TCP endpoints.
//
//------------------------------------------------------------
#include "windows.h"
#include "stdio.h"
#include "snmp.h"
#include "winsock.h"

#define HOSTNAMELEN 256
#define PORTNAMELEN 256
#define ADDRESSLEN HOSTNAMELEN+PORTNAMELEN

typedef struct _tcpinfo {
	struct _tcpinfo		*prev;
	struct _tcpinfo		*next;
	UINT				state;
	UINT				localip;
	UINT				localport;
	UINT				remoteip;
	UINT				remoteport;
} TCPINFO, *PTCPINFO;


BOOL (__stdcall *pSnmpExtensionInit)(
    IN  DWORD               dwTimeZeroReference,
    OUT HANDLE              *hPollForTrapEvent,
    OUT AsnObjectIdentifier *supportedView);

BOOL (__stdcall *pSnmpExtensionQuery)(
    IN BYTE                   requestType,
    IN OUT RFC1157VarBindList *variableBindings,
    OUT AsnInteger            *errorStatus,
    OUT AsnInteger            *errorIndex);

//
// Possible TCP endpoint states
//
static char TcpState[][32] = {
	"???",
	"CLOSED",
	"LISTENING",
	"SYN_SENT",
	"SEN_RECEIVED",
	"ESTABLISHED",
	"FIN_WAIT",
	"FIN_WAIT2",
	"CLOSE_WAIT",
	"CLOSING",
	"LAST_ACK",
	"TIME_WAIT"
};
	
//
// Lists of endpoints
//
TCPINFO		TcpInfoTable;
TCPINFO		UdpInfoTable;


//------------------------------------------------------------
//
// GetPortName
//
// Translate port numbers into their text equivalent if 
// there is one
//
//------------------------------------------------------------
char *GetPortName( UINT port, char *proto, char *name, int namelen ) 
{
	struct servent *psrvent;

	if( psrvent = getservbyport( htons( (USHORT) port ), proto )) {

		strcpy( name, psrvent->s_name );

	} else {

		sprintf(name, "%d", port);

	}		
	return name;
}


//------------------------------------------------------------
//
// GetIpHostName
//
// Translate IP addresses into their name-resolved form
// if possible.
//
//------------------------------------------------------------
char *GetIpHostName( BOOL local, UINT ipaddr, char *name, int namelen ) 
{
	struct hostent			*phostent;
	UINT					nipaddr;

	nipaddr = htonl( ipaddr );
	if( !ipaddr  ) {

		if( !local ) {

			sprintf( name, "%d.%d.%d.%d", 
				(nipaddr >> 24) & 0xFF,
				(nipaddr >> 16) & 0xFF,
				(nipaddr >> 8) & 0xFF,
				(nipaddr) & 0xFF);

		} else {

			gethostname(name, namelen);
		}

	} else if( ipaddr == 0x0100007f ) {

		if( local ) {

			gethostname(name, namelen);
		} else {

			strcpy( name, "localhost" );
		}

	} else if( phostent = gethostbyaddr( (char *) &ipaddr,
		sizeof( nipaddr ), PF_INET )) {

		strcpy( name, phostent->h_name );

	} else {

		sprintf( name, "%d.%d.%d.%d", 
			(nipaddr >> 24) & 0xFF,
			(nipaddr >> 16) & 0xFF,
			(nipaddr >> 8) & 0xFF,
			(nipaddr) & 0xFF);
	}
	return name;
}


//------------------------------------------------------------
//
// LoadInetMibEntryPoints
//
// Load the TCP/IP SNMP extension DLL and locate the entry
// points we will use.
//
//------------------------------------------------------------
BOOLEAN LoadInetMibEntryPoints()
{
	HINSTANCE	hInetLib;

	if( !(hInetLib = LoadLibrary( "inetmib1.dll" ))) {

		return FALSE;
	}

	if( !(pSnmpExtensionInit = (void *) GetProcAddress( hInetLib,
			"SnmpExtensionInit" )) ) {

		return FALSE;
	}

	if( !(pSnmpExtensionQuery = (void *) GetProcAddress( hInetLib,
			"SnmpExtensionQuery" )) ) {

		return FALSE;
	}
	
	return TRUE;
}


//------------------------------------------------------------
//
// Main
//
// Do it all. Load and initialize the SNMP extension DLL and
// then build a table of TCP endpoints and UDP endpoints. After
// each table is built resolve addresses to names and print
// out the information
//
//------------------------------------------------------------
int main( int argc, char *argv[] )
{
	HANDLE					hTrapEvent;
	AsnObjectIdentifier		hIdentifier;
	RFC1157VarBindList		bindList;
	RFC1157VarBind			bindEntry;
	UINT					tcpidentifiers[] = { 1,3,6,1,2,1,6,13,1,1};
	UINT					udpidentifiers[] = { 1,3,6,1,2,1,7,5,1,1};
	AsnInteger				errorStatus, errorIndex;
	TCPINFO					*currentEntry, *newEntry;
	UINT					currentIndex;
	WORD					wVersionRequested;
	WSADATA					wsaData;
	char					localname[HOSTNAMELEN], remotename[HOSTNAMELEN];
	char					remoteport[PORTNAMELEN], localport[PORTNAMELEN];
	char					localaddr[ADDRESSLEN], remoteaddr[ADDRESSLEN];

	//
	// Initialize winsock
	//
	wVersionRequested = MAKEWORD( 1, 1 );
	if( WSAStartup(  wVersionRequested, &wsaData ) ) {

		printf("Could not initialize Winsock.\n");
		return 1;
	}

	//
	// Locate and initialize INETMIB1
	//
	if( !LoadInetMibEntryPoints()) {

		printf("Could not load extension DLL.\n");
		return 1;
	}

	hTrapEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
	if( !pSnmpExtensionInit( GetCurrentTime(), &hTrapEvent, &hIdentifier )) {

		printf("Could not initialize extension DLL.\n");
		return 1;
	}

	//
	// Initialize the query structure once
	//
	bindEntry.name.idLength = 0xA;
	bindEntry.name.ids = tcpidentifiers;
	bindList.list = &bindEntry;
	bindList.len  = 1;

	TcpInfoTable.prev = &TcpInfoTable;
	TcpInfoTable.next = &TcpInfoTable;

	//
	// Roll through TCP connections
	//
	currentIndex = 1;
	currentEntry = &TcpInfoTable;
	while(1) {

		if( !pSnmpExtensionQuery( ASN_RFC1157_GETNEXTREQUEST,
			&bindList, &errorStatus, &errorIndex )) {

			return 1;
		}

		//
		// Terminate when we're no longer seeing TCP information
		//
		if( bindEntry.name.idLength < 0xA ) break;

		//
		// Go back to start of table if we're reading info
		// about the next byte
		//
		if( currentIndex != bindEntry.name.ids[9] ) {

			currentEntry = TcpInfoTable.next;
			currentIndex = bindEntry.name.ids[9];
		}

		//
		// Build our TCP information table 
		//
		switch( bindEntry.name.ids[9] ) {

		case 1:
			
			//
			// Always allocate a new structure
			//
			newEntry = (TCPINFO *) malloc( sizeof(TCPINFO ));
			newEntry->prev = currentEntry;
			newEntry->next = &TcpInfoTable;
			currentEntry->next = newEntry;
			currentEntry = newEntry;

			currentEntry->state = bindEntry.value.asnValue.number;
			break;

		case 2:

			currentEntry->localip = 
				*(UINT *) bindEntry.value.asnValue.address.stream;
			currentEntry = currentEntry->next;
			break;

		case 3:
			
			currentEntry->localport = 
				bindEntry.value.asnValue.number;
			currentEntry = currentEntry->next;
			break;

		case 4:

			currentEntry->remoteip = 
				*(UINT *) bindEntry.value.asnValue.address.stream;
			currentEntry = currentEntry->next;
			break;

		case 5:

			currentEntry->remoteport = 
				bindEntry.value.asnValue.number;
			currentEntry = currentEntry->next;
			break;
		}

	}
	
	//
	// Now print the connection information
	//
	printf("%7s %-30s %-30s %s\n", "Proto", "Local", "Remote", "State" );
	currentEntry = TcpInfoTable.next;
	while( currentEntry != &TcpInfoTable ) {

		sprintf( localaddr, "%s:%s", 
			GetIpHostName( TRUE, currentEntry->localip, localname, HOSTNAMELEN), 
			GetPortName( currentEntry->localport, "tcp", localport, PORTNAMELEN ));

		sprintf( remoteaddr, "%s:%s",
			GetIpHostName( FALSE, currentEntry->remoteip, remotename, HOSTNAMELEN), 
			currentEntry->remoteip ? 
				GetPortName( currentEntry->remoteport, "tcp", remoteport, PORTNAMELEN ):
				"0" );

		printf("%7s %-30s %-30s %s\n", "TCP", 
			localaddr, remoteaddr,
			TcpState[currentEntry->state]);
		
		currentEntry = currentEntry->next;
	}
	printf("\n");

	//
	// Initialize the query structure once
	//
	bindEntry.name.idLength = 0xA;
	bindEntry.name.ids = udpidentifiers;
	bindList.list = &bindEntry;
	bindList.len  = 1;

	UdpInfoTable.prev = &UdpInfoTable;
	UdpInfoTable.next = &UdpInfoTable;

	//
	// Roll through UDP endpoints
	//
	currentIndex = 1;
	currentEntry = &UdpInfoTable;
	while(1) {

		if( !pSnmpExtensionQuery( ASN_RFC1157_GETNEXTREQUEST,
			&bindList, &errorStatus, &errorIndex )) {

			return 1;
		}

		//
		// Terminate when we're no longer seeing TCP information
		//
		if( bindEntry.name.idLength < 0xA ) break;

		//
		// Go back to start of table if we're reading info
		// about the next byte
		//
		if( currentIndex != bindEntry.name.ids[9] ) {

			currentEntry = UdpInfoTable.next;
			currentIndex = bindEntry.name.ids[9];
		}

		//
		// Build our TCP information table 
		//
		switch( bindEntry.name.ids[9] ) {

		case 1:
			
			//
			// Always allocate a new structure
			//
			newEntry = (TCPINFO *) malloc( sizeof(TCPINFO ));
			newEntry->prev = currentEntry;
			newEntry->next = &UdpInfoTable;
			currentEntry->next = newEntry;
			currentEntry = newEntry;

			currentEntry->localip = 
				*(UINT *) bindEntry.value.asnValue.address.stream;
			break;

		case 2:
			
			currentEntry->localport = 
				bindEntry.value.asnValue.number;
			currentEntry = currentEntry->next;
			break;
		}
	}
	
	//
	// Now print the connection information
	//
	currentEntry = UdpInfoTable.next;
	while( currentEntry != &UdpInfoTable ) {

		printf("%7s %s:%s\n", "UDP",
				GetIpHostName( TRUE, currentEntry->localip, localname, HOSTNAMELEN), 
				GetPortName( currentEntry->localport, "udp", localport, PORTNAMELEN ) );
		
		currentEntry = currentEntry->next;
	}
	printf("\n");
	return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美一区| 懂色av一区二区三区蜜臀| 日韩激情av在线| 激情综合色播激情啊| 北条麻妃一区二区三区| 欧洲一区在线电影| 精品福利一二区| 1000部国产精品成人观看| 水蜜桃久久夜色精品一区的特点| 国产一区二区三区综合| 91高清视频在线| 精品国产91亚洲一区二区三区婷婷| ㊣最新国产の精品bt伙计久久| 亚洲地区一二三色| 国产成人午夜片在线观看高清观看| 日本道色综合久久| 久久色.com| 亚洲成a人v欧美综合天堂 | 在线日韩一区二区| 日韩欧美国产综合在线一区二区三区| 国产视频在线观看一区二区三区 | 91精品国产欧美一区二区| 中文字幕精品在线不卡| 日韩高清一级片| 91视频国产资源| 久久一留热品黄| 亚洲成年人影院| 成人激情免费视频| 日韩精品在线网站| 午夜欧美电影在线观看| av亚洲精华国产精华精华| 精品免费99久久| 五月综合激情日本mⅴ| 99久久精品费精品国产一区二区| 精品成人免费观看| 日日噜噜夜夜狠狠视频欧美人| youjizz国产精品| 久久久久久久网| 免费久久99精品国产| 欧美三级视频在线| 亚洲乱码日产精品bd| 国产91精品精华液一区二区三区| 欧美一区二区私人影院日本| 亚洲影院免费观看| 97精品久久久午夜一区二区三区| 国产日韩精品一区二区浪潮av| 婷婷亚洲久悠悠色悠在线播放| 91视视频在线观看入口直接观看www | 国产精品欧美精品| 国产精品资源在线观看| 欧美一级艳片视频免费观看| 亚洲一区欧美一区| 色八戒一区二区三区| 国产精品人妖ts系列视频| 精品一区在线看| 99这里只有久久精品视频| 国产亚洲欧美日韩在线一区| 看片网站欧美日韩| 欧美一区在线视频| 丝袜亚洲另类丝袜在线| 欧美视频在线观看一区| 亚洲在线观看免费视频| 在线一区二区三区四区| 亚洲精品高清在线观看| 91啪亚洲精品| 亚洲蜜臀av乱码久久精品| 99re这里只有精品6| 久久久久久一二三区| 韩国v欧美v日本v亚洲v| 精品久久99ma| 韩国欧美国产1区| 久久久久久9999| 国产电影一区二区三区| 国产欧美精品一区二区色综合| 高清av一区二区| 中文字幕精品在线不卡| 成人黄动漫网站免费app| 国产精品久久久久久久久久免费看| 成人亚洲精品久久久久软件| 国产精品私房写真福利视频| 成人丝袜高跟foot| 亚洲日本在线天堂| 在线免费视频一区二区| 亚洲青青青在线视频| 91久久精品网| 日韩国产欧美三级| 精品久久国产字幕高潮| 国产成人三级在线观看| 亚洲欧美在线另类| 欧美亚洲国产一区二区三区va | 欧美一区二区日韩一区二区| 精品一区二区三区免费| 国产欧美视频一区二区| 972aa.com艺术欧美| 一区二区三区中文字幕在线观看| 精品视频一区三区九区| 蜜乳av一区二区三区| 国产亚洲综合在线| 91女人视频在线观看| 亚洲第一福利视频在线| 精品裸体舞一区二区三区| 国产精品18久久久久久久久久久久| 国产精品视频观看| 欧美三级一区二区| 国产一区视频在线看| 亚洲欧美一区二区三区国产精品| 欧美另类z0zxhd电影| 国产美女精品在线| 亚洲六月丁香色婷婷综合久久| 欧美精品一二三区| 国产成人免费视| 一级日本不卡的影视| 精品国产91久久久久久久妲己| av激情综合网| 日本三级亚洲精品| 国产精品美女久久福利网站| 欧美人狂配大交3d怪物一区| 国产精品一区二区无线| 亚洲一区二区影院| 久久久午夜精品| 欧美日韩中字一区| 粉嫩久久99精品久久久久久夜| 亚洲一区二区偷拍精品| 国产清纯美女被跳蛋高潮一区二区久久w| 91久久精品网| 国产传媒久久文化传媒| 偷窥少妇高潮呻吟av久久免费| 中文字幕巨乱亚洲| 日韩一区国产二区欧美三区| 99精品视频在线观看免费| 免费国产亚洲视频| 亚洲精品免费播放| 久久精品视频在线免费观看| 欧美电影一区二区| 不卡欧美aaaaa| 韩国成人精品a∨在线观看| 亚洲一区二区黄色| 中文字幕一区三区| 精品成人一区二区三区| 欧美日韩国产天堂| 91免费看视频| 国产91露脸合集magnet| 奇米综合一区二区三区精品视频| 有坂深雪av一区二区精品| 久久久影视传媒| 日韩一区二区三区免费看| 91成人在线精品| 不卡电影一区二区三区| 韩国一区二区视频| 日本不卡的三区四区五区| 一二三四区精品视频| 国产精品萝li| 国产日韩欧美麻豆| 欧美xxxxx牲另类人与| 欧美日本一区二区在线观看| 色综合天天狠狠| caoporen国产精品视频| 国产精品一区二区在线观看网站| 六月婷婷色综合| 日本不卡视频在线| 亚洲丶国产丶欧美一区二区三区| 亚洲特级片在线| 国产精品久久久久婷婷二区次| 久久久99精品免费观看不卡| 欧美大片一区二区| 日韩女优毛片在线| 7777精品伊人久久久大香线蕉超级流畅 | 欧美一级片免费看| 欧美日韩综合不卡| 欧美影院一区二区| 在线观看视频一区| 91福利精品第一导航| 欧洲一区在线观看| 欧美三区在线观看| 欧美日韩精品专区| 欧美日韩久久一区| 欧美日韩国产片| 欧美电影一区二区| 日韩片之四级片| 日韩一区二区免费高清| 欧美一级日韩不卡播放免费| 日韩一区二区三区视频在线 | 国产成人鲁色资源国产91色综 | 亚洲欧美日韩在线| 亚洲乱码国产乱码精品精可以看| 亚洲精品国产精品乱码不99| 亚洲午夜一区二区三区| 亚洲国产日韩av| 日韩av一区二区三区四区| 青青草91视频| 国产在线精品免费| 成人免费看黄yyy456| 99精品视频在线播放观看| 一本色道**综合亚洲精品蜜桃冫| 欧美亚洲综合另类| 欧美一区二区日韩一区二区| 久久日韩精品一区二区五区| 国产精品美女久久久久久| 亚洲乱码国产乱码精品精98午夜 | 日韩欧美中文字幕公布|