套接字第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 }
![圖片說明](http://img.ask.csdn.net/upload/201509/10/1441851012_179041.png)![圖片說明](http://img.ask.csdn.net/upload/201509/16/1442393246_433240.png)
我知道了,終於一步步調試出來了,包裹函數Bind寫錯了