图5.12为tcp服务器的最终(正确)版本。它是并发服务器。关于并发服务器,可参考:
4.7 fork and exec Functions,
4.8 Concurrent Servers,
5.8 POSIX Signal Handling,
5.9 Handling SIGCHLD Signals,
5.10 wait and waitpid Functions
程序在accept后处理了EINTR错误,以及在str_echo函数中使用了3.9封装的Readline,Writen函数。
图4.1:
tcpcliserv/tcpserv04.c代码如下:
#include "unp.h"
int
main(int argc, char **argv)
{
int listenfd, connfd;
pid_t childpid;
socklen_t clilen;
struct sockaddr_in cliaddr, servaddr;
void sig_chld(int);
listenfd = Socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
Listen(listenfd, LISTENQ);
Signal(SIGCHLD, sig_chld); /* must call waitpid() */
for ( ; ; ) {
clilen = sizeof(cliaddr);
if ( (connfd = accept(listenfd, (SA *) &cliaddr, &clilen)) < 0) {
if (errno == EINTR)
continue; /* back to for() */
else
err_sys("accept error");
}
if ( (childpid = Fork()) == 0) { /* child process */
Close(listenfd); /* close listening socket */
str_echo(connfd); /* process the request */
exit(0);
}
Close(connfd); /* parent closes connected socket */
}
}
- 大小: 31.3 KB
分享到:
相关推荐
Linux 网络编程修炼指南内功心法,这个是博主https://blog.csdn.net/q1007729991/article/details/69101159,大家可以互相学习
W. Richard Stevens的原版代码,网络编程的经典巨著
改压缩包包含了Unix网络编程卷1第三版所需的unp.h和对应的头文件。编译环境为x86_64 CentOS7 需要请下载。
unp.h 兄弟自己一个字一个打进去的。 之前10分是在没有必要。 资源共享,共同享受编程的乐趣。 这部分代码比较新,可能SCTP有的系统不支持,需要修改一下源码。 如果你觉得还可以,那么给个评论吧。
unix network programming 源码 unix网络编程源码
修改过一些带有编译错误问题的unp.h源码,可在CentOS的服务器上编译,不需要再修改。编译过程如下: tar -zxvf unpv13e.tar.gz rm -y unpv13e.tar.gz cd unpv13e cd lib make cd ../libfree make cd .. cp ...
unp:一个用来方便解包归档文件的命令行工具
unp library and code,unp library and code,unp library and code,unp library and code,unp library and code,c
本书是一部UNIX网络编程的经典之作。书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,...
《UNIX网络编程 卷1:套接字联网API(中文版 第3版)》是一部UNIX网络编程的经典之作。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还...
UNP 源码,建议进阶程序员使用,用处很大
仿照UNP写的server代码,内有我自己的注释
仿照UNP写的client代码,内有我自己的注释
W. Richard Stevens 的代码
UNP_v2_CN经典图书 将part1-part5全下,放到同一目录下
the source code of the book "UNIX Network Programming" UNIX Network Programming, Volume 1 This book is for people who want to write programs that communicate with each other using an application ...
如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,...
Linux经典书-UNP第2卷:进度间的通信-第2版-中文版-带目录-高手必备!
UNIX网络编程第2卷(第2版-中文-高清-进程间通信-带目录) Linux经典书之一,UNP第2卷,必看!
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01 *这里使用 CTRL+Z,此时 serv01 是停止状态* [1]+ Stopped ./tcpserv01 ``` 2. bg 命令 bg 命令用于使进程恢复运行在后台。例如: ``` zuii@zuii-desktop:~/unp/...