图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网络编程修炼指南内功心法,即通过学习UNP(Unix Network Programming)来深入理解Linux下的网络编程技术。网络协议基础部分是学习Linux网络编程的前置知识,它主要包括ISO/OSI七层模型的理解、网络协议的概念...
【标题】"unp 64位 CentOS编译"涉及的是在64位的CentOS操作系统上编译Unix网络编程卷1第三版所使用的`unp.h`头文件及其相关库。这个压缩包包含了必要的源代码和配置文件,使得用户能够在这样的环境中进行编程和开发...
通过阅读源码,开发者可以理解unp的工作原理,学习如何处理不同的文件格式,以及如何编写类似的功能。 总的来说,Python-unp是Python开发者处理归档文件的利器,它极大地提高了工作效率。通过掌握它的使用,你可以...
源码分析是学习此书的重要部分,通过实际操作可以更好地掌握网络编程的精髓。 在Unix系统中,网络编程主要涉及到以下几个关键知识点: 1. **套接字(Sockets)编程**:Unix系统中的网络通信基于套接字接口,这是...
unp.h 兄弟自己一个字一个打进去的。 之前10分是在没有必要。 资源共享,共同享受编程的乐趣。 这部分代码比较新,可能SCTP有的系统不支持,需要修改一下源码。 如果你觉得还可以,那么给个评论吧。
【标题】"unp.rar_W. Richard Stevens_c/C++_unp" 指的是一个压缩包文件,其中包含了著名计算机科学家W. Richard Stevens的作品,主要聚焦于C/C++编程语言,特别是关于网络编程的内容。"unp"可能是《UNIX Network ...
修改过一些带有编译错误问题的unp.h源码,可在CentOS的服务器上编译,不需要再修改。编译过程如下: tar -zxvf unpv13e.tar.gz rm -y unpv13e.tar.gz cd unpv13e cd lib make cd ../libfree make cd .. cp ...
W. Richard Stevens的原版代码,网络编程的经典巨著
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源码",开发者可以深入了解这些概念的实际实现,学习如何有效地利用UNIX提供的网络编程工具和库。此外,源码分析还可以帮助理解网络协议的内部工作原理,这对于优化性能、调试问题或开发自定义网络解决...
《UNP_v2_CN经典图书part3part4》是一份重要的IT学习资源,它涵盖了Unix网络编程(UNIX Network Programming, UNP)的第二版中文版的部分内容。UNP书籍是网络编程领域的权威之作,由W. Richard Stevens撰写,对理解...
仿照UNP写的server代码,内有我自己的注释
仿照UNP写的client代码,内有我自己的注释
相关书籍包括《UNIX Network Programming》(UNP)、《TCP/IP 详解》、《Linux 内核编程》等。 硬件基础 硬件基础是 ARM学习的基础知识领域之一。相关书籍包括《ARM 体系结构与编程》、《S3C2410 Datasheet》等。 ...
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网络编程第2卷(第2版-中文-高清-进程间通信-带目录) Linux经典书之一,UNP第2卷,必看!
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01 *这里使用 CTRL+Z,此时 serv01 是停止状态* [1]+ Stopped ./tcpserv01 ``` 2. bg 命令 bg 命令用于使进程恢复运行在后台。例如: ``` zuii@zuii-desktop:~/unp/...
铁路运输行业“铁·道”系列报告(二):复盘UNP长牛,再识中国铁路-1105-长江证券-34页.pdf