在網路程式的除錯過程中,經常發生一些出乎意料的事情,比如建立乙個tcp服務失敗,這時候往往需要檢視系統的網路情況,最常用的網路抓包當然非wireshark模式。但往往很多時候只需要檢視某個埠的使用情況,它到底被那個程序(對應pid)占用了,或者你還需要把它kill掉。如果你在windows作業系統,你可以使用netstat命令來查詢pid,然後可以開啟任務管理器,檢視這個pid對應的程序名;如果pid沒有顯示,選單》檢視》選擇列》選中pid即可;得知程序後,我們可以將程序殺掉。下面我簡單描述一下我所了解的在windows和linux系統下處理方式。(假如我們需要確定誰占用了我們的9010埠)
1、windows平台 在windows控制台視窗下執行: netstat -nao | findstr "9010" tcp 127.0.0.1:9010 0.0.0.0:0 listening 3017
你看到是pid為3017的程序占用了9010埠,如果進一步你想知道它的程序名稱,你可以使用如下命令:
tasklist | findstr "3017"
taskkill /pid 3017
那麼這個程序就灰灰湮滅了:)
2、linux
如果你是個linux愛好者,那個這個命令你應該很熟了,
netstat -pan | grep 9010
如果你稍微仔細一點,你會發現,用的都是netsta命令,事實上,netstat是乙個比較通用的網路統計命令,幾乎適用於所有現在流行的作業系統,無論是linux,window,還是其他unix,或者unix-like作業系統,而且用法基本一致。
下面是乙個對windows系統中netstat命令列引數的詳細解釋。
格式:netstat [-a] [-e] [-n] [-o] [-p protocol] [-b] [-r] [-s] [-v] [interval]
引數說明:
-a 顯示所有連線和監聽埠。 -n 以數字形式顯示位址和埠號。
-o 顯示與每個連線相關的所屬程序 id。
-p 在windows系統中,該選項用於指定預設情況的子集。proto 顯示 proto 指定的協議的連線;proto 可以是下列協議之一: tcp、udp、tcpv6 或 udpv6。
如果與 -s 選項一起使用以顯示按協議統計資訊,proto 可以是下列協議之一: ip、ipv6、icmp、icmpv6、tcp、tcpv6、udp 或 udpv6。
-b 顯示包含於建立每個連線或監聽埠的可執行元件。在某些情況下已知可執行元件擁有多個獨立元件,並且在這些情況下;包含於建立連線或監聽埠的元件序列被顯示。這種情況下,可執行元件名在底部的 中,頂部是其呼叫的元件,等等,直到 tcp/ip 部分。注意此選項 可能需要很長時間,如果沒有足夠許可權可能失敗。
-e 顯示乙太網統計資訊。此選項可以與 -s選項組合使用。
-s 顯示按協議統計資訊。預設地,顯示 ip、ipv6、icmp、icmpv6、tcp、tcpv6、udp 和 udpv6 的統計資訊。
-r 顯示路由表。
-v 與 -b 選項一起使用時將顯示包含於為所有可執行元件建立連線或監聽埠的元件。
interval 重新顯示選定統計資訊,每次顯示之間暫停時間間隔(以秒計)。按 ctrl+c 停止重新顯示統計資訊。如果省略,netstat 顯示當前 配置資訊(只顯示一次)。
檢視埠號是否被占用
win r 執行cmd dos命令 檢視機器埠占用情況 netstat ano 檢視特定埠占用情況 netstat ano findstr port 例如 c users administrator netstat ano findstr 8080 c users administrator net...
如何查詢埠號是否被占用
第一次寫網路通訊程式,設埠號的時候隨便寫了個16000,本想著應該沒問題,昨天回家整了一晚上沒整出來,疑惑不解。今天上網一查才發現16000竟是 旺旺的預設登入埠,為了避免此類問題的再次發生,下次設埠前一定要查一下,所以順便查了一下查詢埠號是否被占用的方法 分為兩步 第一步,查出埠是被程式id占用,...
檢視埠號是否被占用並釋放埠
c users administrator netstat ano 活動連線 協議 本地位址 外部位址 狀態 pid tcp 0.0.0.0 135 0.0.0.0 0 listening 1004 tcp 0.0.0.0 445 0.0.0.0 0 listening 4 tcp 0.0.0.0 ...