网络编程。为什么为什么netstat -a检测不到server程序调用的监听套接字?

网络编程。为什么为什么netstat -a检测不到server程序调用的监听套接字?

问题描述:

套接字第5章服务器回复程序: 图5-2 tcpcliserv/tcpserv01.c
书上说:"首先,我们在主机上后台启动服务器 ./tcpserv01 &, 会看到一个 address为9877的套接字处于listen状态:"

但是我用 netstat -a并没有发现address 为9877的套接字

然后调用图 5-4 tcp回射客户程序 tcpcliserv/tcpcli01.c ,会发现, 客户程序在运行到
Connect()时出错了, 我猜肯定是服务器程序有问题, 但是问题在哪里?

 1  #include        "unp.h"
 2  
 3  int
 4  main(int argc, char **argv)
 5  {
 6          int                                     listenfd, connfd;
 7          pid_t                           childpid;
 8          socklen_t                       clilen;
 9          struct sockaddr_in      cliaddr, servaddr;
10  
11          listenfd = Socket(AF_INET, SOCK_STREAM, 0);
12  
13          bzero(&servaddr, sizeof(servaddr));
14          servaddr.sin_family      = AF_INET;
15          servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
16          servaddr.sin_port        = htons(SERV_PORT);
17  
18          Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
19  
20          Listen(listenfd, LISTENQ);
21  
22          for ( ; ; ) {
23                  clilen = sizeof(cliaddr);
24                  connfd = Accept(listenfd, (SA *) &cliaddr, &clilen);
25  
26                  if ( (childpid = Fork()) == 0) {        /* child process */
27                          Close(listenfd);        /* close listening socket */
28                          str_echo(connfd);       /* process the request */
29                          exit(0);
30                  }
31                  Close(connfd);                  /* parent closes connected socket */
32          }
33  }
    ![图片说明](https://img-ask.****.net/upload/201509/10/1441851012_179041.png)![图片说明](https://img-ask.****.net/upload/201509/16/1442393246_433240.png)

我知道了,终于一步步调试出来了,包裹函数Bind写错了

sudo执行netstat看看,然后就是服务器程序是否在侦听,会不会出错退出来了

程序应该没错。他说的9877指的是在Local addr一列,有0.0.0.0:9877这样的监听