C 判斷埠是否被占用的方法

2021-09-25 04:28:31 字數 1004 閱讀 3253

一般檢測乙個埠是否被占用的方法是看bind是否成功,其實在windows中有兩個api可以獲取到當前系統埠的占用情況(gettcptable/getudptable),利用這兩個函式就可檢測埠占用情況。

但在較複雜系統環境下,埠占用表可能隨時改變,可能存在兩個以上程序使用上述方法檢測到同一空閒埠,在這種情況下,可使用bind方法進行埠選擇。

一、通過gettcptable/getudptable方法獲取埠占用情況。

#include #include //依賴lib庫 iphlpapi.lib ws2_32.lib

//獲取tcp埠狀態

bool gettcpportstate(ulong nport, ulong *nstateid)

2、使用boost asio庫時,如何判斷埠被占用,使用new socket或bind失敗時來判斷。

boost::asio::io_service ioservice;

unsigned short usport = 9090;

udp::socket * psockudp = null;

bool bsockudperror = false;

try catch(...)

//釋放

if(!bsockudperror && psockudp != null)

ioservice.stop();

boost::asio::io_service ioservice;

boost::asio::ip::tcp::socket * psocktcp = null;

bool bsockuseerror = false;

try

catch (...)

//釋放

if (!bsockuseerror && psocktcp != null)

ioservice.stop();

參考部落格:

C 檢測網路埠是否被占用

最近在使用nginx搭建web伺服器,nginx 發音同 engine x 是一款輕量級的 web 伺服器 反向 伺服器及電子郵件 imap pop3 伺服器,並在乙個 bsd like 協議下發行,可以在 unix gnu linux bsd mac os x solaris,以及 microso...

如何檢視埠是否被占用

開始 執行 cmd 進入命令提示符 輸入netstat ano 即可看到所有連線的pid 之後在任務管理器中找到這個pid所對應的程式如果任務管理器中沒有pid這一項,可以在任務管理器中選 檢視 選擇列 經常,我們在啟動應用的時候發現系統需要的埠被別的程式占用,如何知道誰占有了我們需要的埠,很多人都...

檢查8080埠是否被占用及被占用解決辦法

本人剛學習tomcat的時候出現訪問localhost 8080得到404的錯誤。其中乙個常見的原因是8080埠被占用。如何鎖定占用8080埠的應用究竟是什麼,這就是下面要講的。開啟命令提示符cmd,輸入 netstat aon findstr 埠 我們要查的埠為8080,那麼就輸入命令為 nets...