Unix网络编程卷1 第一章读书笔记以及习题

UNIX网络编程第三版(卷1)读书笔记以及习题-章节1 1. 几个关键点: client使用read读取socket返回的数据的时候,总是使用一个循环包裹,最主要的原因就是tcp/ip协议传输的时候,数据会根据实际情况进行分节,因此只有循环才能保证读出全部的数据。 while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0; /* null termin 阅读详情

1 下载源码并且配置环境

   对于想学习网络编程的同学来说,《UNIX网络编程》这书肯定是不二选择。所谓实践是检验真理的唯一标志,特别是对于编程来讲,再多的理论经验也比不过code一次。《UNIX网络编程》这本书提供连源码下载,第三版本的源码我是在 GitHub上面下载的。

但是源码归源码,下载了如果不会使用那也是瞎扯。下面简单介绍一下在本节主要介绍UNIX网络编程卷(第三版)在Ubuntu19.04的配置问题,并运行一个简单时间获取客户程序。
1.首先下载源文件,链接如下

2.将下载好的压缩文件unpv13e.tar.gz解压,解压后文件为unpv13e.

3.解压后进入源码目录,打开README文件:
 在这里插入图片描述
4.按照提示首先在命令行执行 ./configure,没有问题。

5.执行 cd lib 进入lib文件夹,执行make命令,没有问题。

6.执行 cd …/libfree进入libfree文件夹,执行make命令,会遇到以下问题:
在这里插入图片描述
错误解决办法是:进入libfree文件夹,打开inet_ntop.c,在第60行将size_t size改为socklen_t size。
在这里插入图片描述
7.再执行第6步,问题解决。

8.在命令行执行 cd …/intro/,进入intro文件夹,

执行 make daytimetcpcli,生成可执行文件后,

执行 ./daytimetcpcli 127.0.0.1 会出现以下问题:

Connection refused
运行时间获取程序,需要现在ubuntu里安装时间服务

9.执行以下命令

sudo apt-get install xinetd
sudo vi /etc/xinetd.d/daytime
将图中的两个disable的值改为no:
在这里插入图片描述
执行 service xinetd restart
10.重新执行./daytimetcpcli 127.0.0.1,结果如图
在这里插入图片描述

2 章节末习题

第三题:修改client socket(AF_INET, SOCK_STREAM, 0) AF_INET成9999.

结果:报socket error: Address family not supported by protocol family 。
经查询:AF_INET本身代表了protocol family的一个特殊标记值,如果修改成其他值,相当于一个新的protocol family,那么之后传入的address family当然不会支持了。

第四题:client增加一个计数器并打印。
int counter = 0;

while ( (n = read(sockfd, recvline, MAXLINE)) > 0) 
{
    counter++;
    recvline[n] = 0;    /* null terminate */
    if (fputs(recvline, stdout) == EOF)
        err_sys("fputs error");
}

printf("%d\n",counter);
第五题:修改server端代码,将原本完整的内容,单字节发送,并查看client端实际执行的read次数。
for (int i = 0; i < strlen(buff); ++i)
{
    Write(connfd, &(buff[i]), 1);
}

Close(connfd);

实际执行client端,每次执行read的counter都在变化。
在这里插入图片描述

unix高级编程网络编程面试题 《UNIX环境高级编程》是2006年由人民邮电出版社出版的图书,作者是(美)理查德·史蒂文斯、(美)拉戈,译者是张亚英、戚正伟。文档中含有常见的unix高级编程面试题,带详细答案。 立即下载

相关推荐

UNIX网络编程 第一卷+第二卷

进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris门、Sun RPC)。

UNIX网络编程第三版(卷1)读书笔记以及习题-章节2

1. 几个关键点 常用连接协议TCP、UDP的特点: TCP:可靠的,全双工(同一时刻,允许数据在两个方向上同时传输)通信协议。 完成一次连接需要进行3次握手:客户端发起请求(SYN) —— 服务器收到客户端请求(SYN)并返回确认(ACK) —— 客户端收到服务器确认(ACK)并发送确认的确认(ACK) —— 服务器收到客户端确认(ACK),建立连接。 完成一次断开需要进行4次握手:主动

Orz..一入码门深似海 1027

UNIX网络编程(第1卷中文版 带书签)

linux网络编程的圣经,这里整理过加上书签,便于浏览。

Unix网络编程读书笔记(一)

之前终于把unix环境高级编程这本书过了一遍,其中介绍的内容不少,有些内容一下子还接受不了。算了,就先这样吧,以后用到的时候再详细研究吧。 今天开始看看Unix网络编程这本书。还是在看书的同时写写读书笔记,方便忘记了随时查阅。 先来看看TCP与UDP之间的区别,一个老掉牙的问题了。 TCP是面向连接的,UDP是无连接的。TCP是可靠的而UDP是不可靠的。为了实现这一区别,TCP采用了“发

Andy.Wang的博客 1388

2024最新Typora配置指南:从安装到打造学术写作环境(含LaTeX/参考文献解决方案)

本文提供2024年最新Typora配置指南,详细讲解如何从安装开始,结合Pandoc、Zotero和LaTeX,打造高效的学术写作环境。指南涵盖Typora深度定制、学术主题配置、参考文献自动管理以及一键生成出版级PDF的完整解决方案,旨在帮助科研人员和学生实现内容与格式分离,大幅提升论文写作效率。

weixin_29258297的博客 210

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

况老师话竞赛&blog 2192

UNIX网络编程卷一 学习笔记 第一章 简介

一般认为web服务器是一个长时间运行的程序(即守护程序),它只在响应来自网络的请求时才发送网络消息。 大多网络应用都是由客户进程发起通信请求,确定这一点有助于简化协议和程序。一些较为复杂的网络还需异步回调通信,即由服务器向客户发起请求信息。 通过网络通信的程序编写时要先确定程序相互通信所用的协议。 一个服务器可同时处理多个客户请求。 客户和服务器无需如上图一样都处于一个局域网,可通过路由器将两个局域网连接到广域网: 最大的广域网是因特网。 向服务器查询时间: #include <stdio.h&g

tus00000的博客 812

【技术分享】ArcGIS Pro底图色彩优化实战:从DEM到山体阴影的进阶调色技巧

本文深入探讨了在ArcGIS Pro中优化地形底图色彩的进阶技巧。通过分析DEM与山体阴影的直方图,详细讲解了如何运用图层混合、亮度、对比度及伽马值等核心参数进行精细化调色,从而将灰暗平淡的地图转化为层次分明、视觉美观的专业成果。

5b6n7m8的博客 758

Unix网络编程第一卷学习总结

简述和TCP/IP 如果要写一个简单的ipv6客户端程序,需要sockaddr_in6地址,其余用法和ipv4的用法一致, 先指定地址族,端口,ip地址,connect成功后,就可以发包收包

quinta2008,阳光风雨就是我 1874

Python pydub实现语音停顿切分

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(fi...

wangqianqianya的博客 1万+

VFIO框架源码分析(二十二)- IOMMUFD 的脏页跟踪与 Dirty Bits 读取

在虚拟化热迁移(Live Migration)的场景中,脏页追踪(Dirty Page Tracking)是最具挑战性的环节之一。它的核心任务是实时捕获设备(DMA)对内存的写操作,以便 VMM(如 QEMU)知道哪些内存页需要被重新传输到目标主机。在强耦合与粗粒度:脏页追踪是绑定在 Container 上的。这意味着,如果一个 Container 内有多个设备,哪怕只有一个设备在写内存,脏页追踪也会影响 Container 内的所有设备。软件模拟开销大。

qq_36071928的博客 1042

UNIX网络编程读书笔记(一)第一章 简介

第一章常见函数及变量va_list、va_start、vsprintf、va_endfflush()函数Linux errno Web客户与服务器之间使用TCP(Transmission Control Protocol ,传输控制协议)通信。TCP又转而使用IP(Internet Protocol,网际协议)通信,IP再通过某种形式的数据链路层通信。 局域网:local area netw...

zty5317 391

CONN工具箱分析fmri数据笔记1

前言一、安装二、预处理三、去噪 前言 CONN:functional connectivity toolbox,是基于MATLAB和SPM的一个对功能磁共振数据进行分析的一个工具箱。可以进行以下分析: Seed-based correlations (SBC), ROI-to-ROI correlations, graph analyses, Independent component analyses(group-ICA), Masked (ICA) Amplitude of Low-Frequency.

weixin_52073820的博客 6585

UNIX网络编程卷1 第一章 简介 读书笔记。

基本没讲什么,一点点计算机网络发展史,一点点socket()简单介绍,最重要的是1.3节协议无关性。 协议无关性:   贯穿整本书的一个重要特性,他主要强调的是 socket是网络协议无关的编程接口。   socket给出一个struct sockaddr结构,每一种协议都有自己特定的地址结构来记录协议中需要的基本信息,通过强制类型转换成struct sockaddr结构。这样可以...

C12267的博客 218

轮式并联五连杆下肢机器人运动控制:从建模到强化学习仿真训练

本文提出了一种基于强化学习的轮式并联五连杆下肢机器人运动控制方法。首先建立了机器人的运动学和动力学模型,推导了正逆解公式,并构建了URDF模型。随后在PyBullet仿真环境中搭建了包含复杂地形的训练场景,设计了基于PPO算法的端到端控制策略,包含状态空间、动作空间和奖励函数的详细设计。通过多组仿真实验验证了该方法在台阶攀爬等任务中的有效性,为轮腿机器人运动控制提供了完整的可复现技术方案。

huanghm88的专栏 347

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2601

《UNIX网络编程卷1》读书笔记--第七章套接字选项

《UNIX网络编程卷1》读书笔记–第一章

勿在浮沙筑高台 464

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《UNIX网络编程卷1》读书笔记--第二章传输层

前言本章提供本书示例所有TCP/IP协议的概貌。主要涉及TCP连接和终止、状态转换图、TIME_WAIT状态和UDP概述(第一次拜读忽略了SCTP) 关注点 TCP/IP协议概况 用户数据包协议UDP 传输控制协议TCP TCP/IP协议概况 ICMP 网际消息控制协议 处理在路由器和主机之间流通的错误和控制消息。 IGMP 网际组管理控制协议 用于多播 ARP 地址解析协议 把一个ip地址映

勿在浮沙筑高台 637

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

《UNIX网络编程——Socket Networking API》(3rd,Vol1)读书笔记(1)【第一章】

《Uni网络编程—Socket Networking API》 读书笔记 UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking API>  Reading Notes (使用的是2003年的英文第三版)

vingstar的专栏 1507

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

unix网络编程---读书笔记(一)---tcp/udp/sctp简介

本博客为系列博客,主要记录 《UNIX网络编程 卷一》相关读书笔记; 此篇博客主要针对 第一部分 :简介和 TCP/IP 进行网络编程,首先要确认网络通信协议(protocol);Unix网络编程主要关注基于传输层的TCP,UDP, SCTP协议。 以web服务器(基于TCP/IP协议族)为例 : 通常web网络应用有客户端(client)和服务器(server)构成,假定总

走一步再走一步 4649

UNIX网络编程:卷1-读书笔记

Unix网络编程:卷1-socket套接字 读书笔记

huanzai2的专栏 1653

UNIX网络编程卷2进程间通信读书笔记汇总

UNIX网络编程卷2进程间通信读书笔记(一)—概述http://blog.chinaunix.net/u/22935/article_52711_2.html UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1)http://blog.chinaunix.net/u/22935/article_52711_2.html UNIX网络编程卷2进程间通信读书笔记(二)

紫侠的天空 1383

1.通过tcp从daytime服务器获取时间

最近愈发觉得在学习源代码或者看书的时候,做下读书笔记,不仅能加深印象和理解,同时也方便日后进行回顾,所以就写下UNP(UNIX网络编程)卷1的读书笔记,涉及到的代码基本都是原作者提供的,为了方便编译做了一定简化,我是在Ubuntu上进行编译的,不同操作系统可能存在兼容问题。 该书第一个小程序就是通过tcp从daytime服务器获取时间,代码如下: 运行时传递一个daytime服务器的i

疯哥哥带你飞 4296

《UNIX 网络编程-卷1》阅读笔记05: 基本 TCP 套接字编程

第四章是UNP全书的真正编程起点。前一章学习了套接字地址结构和字节序转换这些基础构件,本章将这些概念落到实处——开始编写真正的TCP客户/服务器程序。本章的使命是完整介绍编写一个TCP客户/服务器程序所需要的全部基本套接字函数,包括socket、connect、bind、listen、accept、close和fork等。学完本章,你将能够独立编写一个简单的TCP回射(echo)客户/服务器程序。

3319

Linux网络编程读书笔记(1)

LINUX网络编程的读书笔记笔记是该书内容的精简,适当之处加上我个人的观点。笔记整理:ZhangYv     日期:2005-1-15 书名:Linux网络编程   作者:林宇 郭凌云     出版社:人民邮电难度:入门到进阶   第一章 文件系统和进程系统1.1文件系统的总体结构       从文件系统的实现角度来看,按层次可以分成应用程序、系统调用、文件子系统、高速缓冲、设备驱动和具体的存储设

ZhangYv的专栏 3412
上一篇: 解决 vs error BK1505 cannot read from file 'Debug/XXX.bsc'方法
下一篇: Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.so
PGEva
博客等级 码龄10年 78粉丝 129原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值