一般檢測乙個埠是否被占用的方法是看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...