unp第三章主要介绍了基本套接字编程函数.主要有:socket(),bind(),connect(),accept(),listen()等. 本博文也直接进入正题,对这几个函数进行剖析和讲解. 1. 基本套接字函数 在<计算机网络>和<TCP/IP详解>中,我们经常讨论TCP/IP的工作流程,连接建立的三次握手和连接断开的四次挥手等,那么这些如何体现在程序中呢?我们如何来运用这些理论知识于实践之中呢?下面我们来看看套接字编程中客户和服务器进程之间的一些典型事件的时间表. 如图,服务…
本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O复用适用于以下场合: (1) 当客户处理多个描述符(一般是交互式输入或网络套接字),必须适用I/O复用 (2) 当一个客户处理多个套接字时,这种情况很少见,但也可能出现 (3) 当一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用 (4) 如果一个服务器既要适用TCP,…
<unix网络编程>一书中的代码并不是能直接运行,有时候需要结合各方面的知识来解决,大家在这本书的时候,一定要把代码都跑通,不难你会错过很多学习的机会! 1.问题描述 本人在阅读<UNIX网络编程>中,发现运行书中服务器端程序时,返回bind error:Address already in use! 服务器端代码如下: #include "unp.h" #include <time.h> int main(int argc, char **argv…
粗略的阅读过<TCP/IP详解>和<计算机网络(第五版)>后,开始啃这本<UNIX网络编程卷一:套接字联网API>,目前linux下的编程不算太了解,在阅读的过程中也会有很多障碍,希望自己坚持下去. 一.源代码的下载和编译 源代码下载地址:http://www.unpbook.com/ , 下载下来得到unpv13e.tar.gz文件 编译步骤: 解压缩zxvf unpv13e.tar.gz tar zxvf unpv13e.tar.gz 进入unpv13e文件夹中 c…
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这篇博客就不再赘述. 本篇博客主要记录套接字编程API,从一些基本的API来一步一步了解套接字网络编程. 1.套接字地址结构 大多数的套接字函数都以一个指向套接字地址结构的指针作为参数.每个协议簇都定义了自己的套接字地址结构. 套接字地址结构均以sockaddr_开头,并以对应每个协议簇的唯一后缀结尾. 1.1…
第一步:首先下载本书配套的源码unpv13e.tar.gz 第二步:解压后进入根文件夹有一个README 4 Execute the following from the src/ directory: 5 6 ./configure # try to figure out all implementation differences 7 8 cd lib # build the basic library that all programs need 9 make # use "gmake&q…
本篇博客主要记录一个完整的TCP客户/服务器实例的编写,以及从这个实例中引发的对僵死进程的处理等问题. 1. TCP客户/服务器功能需求 本实例完成以下功能: (1) 客户从标准输入读入一行文本,并写给服务器 (2) 服务器从网络输入中读入这行文本,并回射给客户 (3) 客户从网路输入读入这行回射文本,并显示在标准输入 需要用到的函数: (1) 套接字编程基本函数(socket,bind,listen,accept,connect,close等),完成套接字编程 (2) 标准I/O库函数fput…
第五章p102: ps -t  pts/6 -o pid,ppid,tty,stat,args,wchan 在我的系统上运行时出现:TTY not found linux发行版为mint17.1 改用 ps -t pts/2 -o pid,ppid,tty,stat,args,wchan后正常…
配置: $ cd Unix-Network-Programming/ $ chmod 755 configure $ ./configure 主要的工作是检查系统是否有源码编译所依赖的各种资源(系统版本是否匹配.编译器.库文件.头文件以及结构体定义等等) checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for…
ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该IP首部后面的前8个字节(包含源端口和目的端口).在我们的例子中,跟在IP首部后面的前8个字节包含UDP的首部. 我们利用前面博客中UNIX网络编程学习(18)中UDP回射程序,不开启服务器端程序,只开启客户程序,发送出一个hello,没有回应,但是用wireshark抓包,会有: 根据上述ICMP格式: 76 = 14+20+8+20+8+6(hello占6字节) 同时,我们也可以…