1、在windows下用cmd netstat命令可以獲得當前程序監聽埠號的資訊,如netstat -ano可以看到ip、port、狀態和監聽的pid。
那麼可以執行cmd這個程序得到監聽的埠號資訊,c#**如下:
//2、如果不執行cmd程序,如何獲得?可以參考這篇文章程序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();
文章介紹了使用windows api獲得程序和埠的對映關係:
(1)根據程序 id 獲得該程序所開啟的所有的 tcp 和 udp 埠。
(2)根據埠號來獲得開啟該埠的程序。
c語言**如下:
如果要在.net平台下使用,將其編譯成dll,使用pinvoke得到dll匯出函式就可以了。
c#測試**:
using獲得程序監聽tcp/udp埠號的dll:processorport.rarsystem;
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();}}
}
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 就表示了對應的檔案對映物件是從作業系統頁面檔案訪問記憶體,其它程序開啟該...