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