Netstat


在cmd中輸入netstat -nao | findstr 8888, 然后回車,你一般會得到nothing.

 

網絡編程,啟動socket 

 addrSrv.sin_family = AF_INET; // TCP/IP協議族

 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");    

 addrSrv.sin_port = htons(8888); // socket對應的端口 

 

再在cmd中執行netstat -nao | findstr 8888, 得到的結果為:


C:\Documents and Settings\Administrator>netstat -nao | findstr 8888
TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       4352

 

我來解釋一下, 這表明是tcp socket而不是udp socket, 127.0.0.1是本地地址, 此處是服務器的地址, 8888是服務器的監聽端口, listening表示服務器socket處於監聽狀態, 4352是服務器對應的進程號。 由於還沒有建立tcp連接,所以遠端是0.0.0.0:0, 你可以理解是服務端。

 

    好,別關掉上面的服務器, 運行下面的客戶端程序:

啟動客戶端,連接服務器。

 

我們再cmd中執行netstat -nao | findstr 8888, 得到的結果為:

C:\Documents and Settings\Administrator>netstat -nao | findstr 8888
  TCP    127.0.0.1:2453         127.0.0.1:8888         ESTABLISHED     5520
  TCP    127.0.0.1:8888         0.0.0.0:0                    LISTENING            4352
  TCP    127.0.0.1:8888         127.0.0.1:2453         ESTABLISHED     4352

 

我們來分析一下: 

     TCP    127.0.0.1:8888         127.0.0.1:2453         ESTABLISHED     4352

     表明一個tcp連接已經建立, 本地服務器IP/Port為127.0.0.1:8888, 遠處的客戶端為127.0.0.1:2453      本地服務器進程號為4352

   

     TCP    127.0.0.1:2453         127.0.0.1:8888         ESTABLISHED     5520
     表明一個tcp已經建立,  本地客戶端為127.0.0.1:2453, 遠處的服務器為127.0.0.1:8888, 本地客戶端的進程號為5520

 

     TCP    127.0.0.1:8888         0.0.0.0:0                    LISTENING            4352

     這是一個全新的、處在監聽狀態的服務器tcp socket, 進程號仍是4352, 因為是同一個進程啊。

   

      上述服務器和客戶端是在同一台電腦上運行的,用的是回測地址。如果你有條件,找兩台電腦,聯網,然后用真實地址, 再嘗試一下,相信會有不少收獲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM