獲取Windows下某程序監聽的TCP UDP埠

2021-09-22 09:18:33 字數 2540 閱讀 7755

1、在windows下用cmd netstat命令可以獲得當前程序監聽埠號的資訊,如netstat -ano可以看到ip、port、狀態和監聽的pid。

那麼可以執行cmd這個程序得到監聽的埠號資訊,c#**如下:

//

程序id

int pid =procinfo.processid;

//存放程序使用的埠號鍊錶

list ports = new list();

process pro = new

process();

pro.startinfo.filename = "

cmd.exe";

pro.startinfo.useshellexecute = false

; pro.startinfo.redirectstandardinput = true

; pro.startinfo.redirectstandardoutput = true

; pro.startinfo.redirectstandarderror = true

; pro.startinfo.createnowindow = true

; pro.start();

pro.standardinput.writeline(

"netstat -ano");

pro.standardinput.writeline(

"exit");

regex reg = new regex("

\\s+

", regexoptions.compiled);

string line = null

; ports.clear();

while ((line = pro.standardoutput.readline()) != null

)

}else

if (line.startswith("

udp"

, stringcomparison.ordinalignorecase))}}

pro.close();

2、如果不執行cmd程序,如何獲得?可以參考這篇文章

文章介紹了使用windows api獲得程序和埠的對映關係:

(1)根據程序 id 獲得該程序所開啟的所有的 tcp 和 udp 埠。

(2)根據埠號來獲得開啟該埠的程序。

c語言**如下:

如果要在.net平台下使用,將其編譯成dll,使用pinvoke得到dll匯出函式就可以了。

c#測試**:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.runtime.interopservices;

namespace

processorportdlltest

;

public

class

processporthelper

class

program

is using by processor

",port,processorid);

uint processorid1 = 1072

;

uint tcpports = new

uint[100

];

uint count = processporthelper.getallportbyprocessid(tcporudp.tcptype, processorid1, tcpports, (uint

)tcpports.length);

console.writeline(

"processor is using tcp port:

", processorid1);

for (uint i = 0; i < count; ++i)

uint u***orts = new

uint[100

];

uint count1 = processporthelper.getallportbyprocessid(tcporudp.udptype, processorid1, u***orts, (uint

)u***orts.length);

console.writeline(

"processor is using udp port:

", processorid1);

for (uint i = 0; i < count1; ++i)

console.readkey();}}

}

獲得程序監聽tcp/udp埠號的dll:processorport.rar

Windows的shell下,殺掉某程序

使用了windows下的findstr tasklist taskkill echo for命令。在windows的命令列下,怎麼殺掉某程序 比如,殺掉所有的mspaint.exe畫圖程序 echo off echo begin for f tokens 1,2 delims a in taskli...

java獲取某程序的程序數

最近工作中用到一些執行緒方面的知識,主要用到一些程序的pid以及程序數量方面的知識一下是一些 public static int getcountbypname string pname final printwriter pw new printwriter new filewriter crea...

windows下程序通訊

1 程序與程序通訊 2 程序通訊方法 2.1 檔案對映 win32 api中共享記憶體 shared memory 實際就是檔案對映的一種特殊情況。程序在建立檔案對映物件時用0xffffffff來代替檔案控制代碼 handle 就表示了對應的檔案對映物件是從作業系統頁面檔案訪問記憶體,其它程序開啟該...