摘要: 在上篇中,我们已经发现了原来的并发回射程序隐藏的问题 - 僵尸子进程。 而在本篇中,我们将通过Linux的信号机制,将这些不该存于世间的“ 僵尸 ”通通清理掉。 阅读全文
posted @ 2017-01-29 12:39 穆晨 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 本文将分为两个部分,第一部分具体实现一对并发回射服务器/客户程序( 看过前面那篇文章的这部分可不看 重复了 );第二部分为服务器添加僵尸子进程自动清理机制。 那么服务器具体怎么实现并发?怎么会有僵尸进程?僵尸进程又是什么?如何处理这些僵尸进程 ... 本文将为你一一解惑。 阅读全文
posted @ 2017-01-29 12:33 穆晨 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 基于TCP的一对回射客户/服务器程序及其运行过程分析( 上 )的执行分析。 阅读全文
posted @ 2017-01-29 12:26 穆晨 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 本文将讲解一对经典的客户/服务器回射程序,感受网络编程的大致框架( 该程序稍作改装即可演变成各种提供其他服务的程序 );同时,还将对其运行过程加以分析,观察程序背后协议的执行细节,学习调试网络程序的技巧。 阅读全文
posted @ 2017-01-29 12:22 穆晨 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 知道套接字描述符,如何获取这个套接字连接的相关信息呢?显然,这是一个必须要清楚的问题。 阅读全文
posted @ 2017-01-29 12:20 穆晨 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 一个服务器,通常会在一段时间内接收到多个请求。如果非要等到处理完一个请求再去处理下一个,势必会造成大部分用户的不满( 尤其当有某个请求需要占用大量时间时 )。 如何解决这个问题?让处理这些用户请求的进程并发起来吧! 阅读全文
posted @ 2017-01-29 12:18 穆晨 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 在TCP通信中要使用到几个非常经典的函数,本文将对这几个函数进行一个简短的使用说明。 阅读全文
posted @ 2017-01-29 12:12 穆晨 阅读(1226) 评论(0) 推荐(0) 编辑
摘要: IP地址在套接字地址结构中是以结构体in_addr方式存放的,这种结构体也叫做IP参数的数值格式。当我们要将IP参数存进套接字地址结构,显然要先将其转换为数值格式。下面将介绍几个函数,能很好的实现转换功能。这些函数都包含在头文件 arpa/inet.h 中。 阅读全文
posted @ 2017-01-29 12:04 穆晨 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 我们知道,数据在主机内的存放有两种模式,也就是说,主机字节序有两种:大端和小端( 这里假定读者已经清楚这个问题 )。但在网络通信中,要求通信数据( 通信数据这里指IP号和端口号 )的使用必须用网络字节序。什么又是网络字节序? 阅读全文
posted @ 2017-01-29 12:01 穆晨 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 本文通过一对经典的时间获取客户/服务器程序,展现了Linux网络编程的大体框架,为以后更深入的学习打下基础。 阅读全文
posted @ 2017-01-29 11:55 穆晨 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 为何TCP ”四次分手“ 的过程中会有一个TIME_WAIT状态?这个状态有什么意义呢?这是网络中的一个经典问题,本文将给出精简的回答。 阅读全文
posted @ 2017-01-29 11:53 穆晨 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 编程是对现实世界的模拟,网络通信自然也是对现实世界通信的模拟。可以将网络通信中使用的各种API和对现实世界中的各种通信设备进行通讯的操作进行对比以加深理解。 阅读全文
posted @ 2017-01-29 11:51 穆晨 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 第五步:进入包内lib子目录下执行make命令 第六步:进入包内libfree子目录下执行make命令 阅读全文
posted @ 2017-01-29 11:48 穆晨 阅读(514) 评论(0) 推荐(0) 编辑