随笔分类 - 计算机基础
摘要:ioctl 函数用来当作一些不适合归入其他精细定义类别特性的系统接口。在网络编程中,这主要涉及了如下几个方面:套接字操作、文件操作、接口操作、ARP表操作、路由表操作和流操作。本章内容比较无聊。
阅读全文
摘要:套接字的默认状态是阻塞的,这意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待响应的操作完成。但是,在等待套接字的时间里,我们其实是可以做一些其它的事情的——这就要用到本节中的非阻塞 IO 来实现,本文尝试将前面的几个案例中的代码改为非阻塞版本。但是,要注意的是,尽管非阻塞 IO 的效率比较高,但是其可能降低代码的可维护性,这在某些场景下是得不偿失的,因此我们要谨慎地使用,并在需要的时候考虑多进程/线程的版本。
阅读全文
摘要:本文讲解了 Unix 域套接字的一些知识。Unix 域套接字是一种 IPC 的方式,可以在同一主机传递消息。它的优势是使用了和 Socket 套接字相同的 API,并且,其速度要比 TCP 等传输方式要快。Unix 域套接字可以分为数据流套接字和数据报套接字。我们还可以使用 Unix 域套接字实现描述符的传递、以及用户凭证的收发。
阅读全文
摘要:本文讲述了 Unix 的高级 IO 函数,包括给套接字设置超时的三种方法,以及几对消息处理函数,最后又提到了一些概念,包括辅助数据、高级轮询、T/TCP等。
阅读全文
摘要:本文讲述了 Unix 下守护进程的创建和使用,以及 Unix 的 inetd 超级服务器。守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端产生信号等发生任何不期望的交互,同时要避免在后台运行的守护进程非预期地输出到终端
阅读全文
摘要:名字和地址转换 系列文章导航:《Unix 网络编程》笔记 域名系统 简介 域名系统主要用于主机名字和 IP 地址之间的映射。主机名可以是: 简单名字,如:centos01 全限定域名(FQDN1),如:xxx.com 资源记录 记录 作用 A 指向IPv4 AAAA 指向IPv6 PTR 把IP地址
阅读全文
摘要:IO复用之select/poll 系列文章导航:《Unix 网络编程》笔记 概述 进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个 I/O 条件准备就绪,他就通知进程。这个能力被称为 I/O 复用。 典型应用场景有: 客户处理多个描述符(如之前的应用那样) 客户同时处理多个套接字
阅读全文
摘要:基本UDP套接字编程 系列文章导航:《Unix 网络编程》笔记 UDP 概述 流程图 recvfrom 和 sendto #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags
阅读全文
摘要:IPv4 和 IPv6 的互操作性 系列文章导航:《Unix 网络编程》笔记 IPv4客户端与IPv6服务器 IPv4 Mapped IPv6 address 双栈主机的一个基本特性是其上的 IPv6 服务器既能处理 IPv4 客户,又能处理 IPv6客户,这是通过使用 IPv4 映射的 IPv6
阅读全文
摘要:TCP客户/服务器程序示例 系列文章导航:《Unix 网络编程》笔记 目标 ECHO-Application 结构如下: graph LR; A[标准输入/输出] --fgets--> B[TCP-Client] --writen/read--> C[TCP-Server] C --readline
阅读全文
摘要:本文讲解了 Unix 网络编程的若干函数,包括 socket、listen 等等,是之后继续学习的基础。尽管这些内容比较无趣,但是建议看完再继续往后学习。
阅读全文