該程式系參考《unp》來編寫的,主要用來練習select及shutdown函式的使用。
伺服器**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 8888
#define backlog 100
#define maxline 1024
int main()
//寫入套接字位址
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_addr.s_addr = htonl(inaddr_any);
servaddr.sin_port = htons(port);
//繫結位址
if ((n = bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0)
//監聽
if ((n = listen(listenfd, backlog)) < 0)
for (i = 0; i < fd_setsize; i++)
client[i] = -1;
maxfd = listenfd;
maxcli = -1;
fd_zero(&allset);
fd_set(listenfd, &allset);
for (;;)
if (fd_isset(listenfd, &rset))
printf("accept: %d\n", connfd);
//更新連線表
for (i = 0; i < fd_setsize; i++)
if (client[i] < 0)
fd_set(connfd, &allset); //更新描述符集
if (connfd > maxfd)
maxfd = connfd; //更新最大檔案描述符
if (i > maxcli)
maxcli = i; //更新最大連線表索引
if (--nready <= 0)
continue;
}for (i = 0; i <= maxcli; i++)
printf("close: %d\n", sockfd);
fd_clr(sockfd, &allset);
client[i] = -1;
} else
if (n > 0) }}
if (--nready <= 0)
break;}}
}}
客戶端**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 8888
#define maxline 1024
int main(int argc, char* argv)
if((sockfd = socket(af_inet, sock_stream, 0)) < 0)
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(port);
if((n = inet_pton(af_inet, argv[1], &servaddr.sin_addr)) < 0)
else
if(n == 0)
if((n = connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr))) < 0)
maxfd = sockfd;
fd_zero(&rset);
stdineof = 0;
for(;;)
if(fd_isset(0, &rset))
fd_clr(0, &rset);
continue;
}else
if(n < 0)
if((n = write(sockfd, buf, n)) < 0)
}if(fd_isset(sockfd, &rset))
}else
if(n < 0)
if((n = write(1, buf, n)) < 0)}}
return
0;}
TCP 回射程式
客戶端從標準輸入讀入一行文字,並發給伺服器 伺服器從網路輸入讀入這行文字,並且回射給客戶 客戶從網路輸入讀入這行回射文字,並且顯示在標準輸出上。伺服器從網路讀入和返回 void str echo int sockfd while 1 int main 父程序中關閉已連線套接字 close connf...
TCP網路程式設計之echo回射程式
tcp網路程式設計有三個例子最值得學習研究,分別是echo chat proxy,都是長連線協議。接下來,把這幾個例子都實現。本節用乙個簡單的例子來講tcp客戶 伺服器程式框架,這也是echo的實現。程式的基本流程 客戶從標準輸入鍵入一行文字,並傳送給伺服器。伺服器接收到文字之後回射給客戶端。客戶端...
(unix網路程式設計)tcp回射程式二 避免殭屍程序
本例在上一例的基礎上增加了singal函式來捕捉子程序退出時候產生的sigchld訊號,從而防止子程序變成殭屍程序。伺服器端的 如下 include include include include include include include include include include def...