在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, 因为是同一个进程啊。
上述服务器和客户端是在同一台电脑上运行的,用的是回测地址。如果你有条件,找两台电脑,联网,然后用真实地址, 再尝试一下,相信会有不少收获。