Linux SIGPIPE信号
在 TCP 通信双方中,为了描述方便,以下将通信双方用 A 和 B 代替。 当 A “关闭”连接时,若 B 继续给 A 发数据,根据 TCP 协议的规定,B 会收到 A 的一个 RST 报文响应,如 B 继续再往这个服...
Linux poll详解
poll 函数用于检测一组文件描述符(File Descriptor, fd)上的可读可写和出错事件,其函数签名如下: #include <poll.h> int poll(struct pollfd* fds, nfds_t nfds, int timeout); 参数...
Linux epoll详解
基本用法 综合 select 和 poll 的一些优缺点,Linux 从内核 2.6 版本开始引入了更高效的 epoll 模型,本文我们来详细介绍 epoll 模型。 要想使用 epoll 模型,必须先需要创建一个 epollfd,...
readv和writev函数详解
在实际开发种,高性能服务有一条尽量减少系统调用的原则。 对于一个文件描述符(file descriptor,fd,例如文件指针、套接字类型)的 read 或者 write,都是系统调用。 有时候我们会遇到通过一...
主机字节序和网络字节序详解
主机字节序 网络通信本质上是不同的机器进行数据交换,一般不同的机器有着不同的 CPU 型号,不同的 CPU 其字节序可能不一样。 所谓字节序指的是对于存储需要多个字节(大于 1 字节)的整数来说...
域名解析API介绍
为了便于记忆,有时候我们需要我们的程序可以使用域名和端口号去连接服务,这种情况下,我们需要使用 socket API gethostbyname 函数先把域名转换成 ip 地址,再使用 connect函数连接。 在Lin...
应用层常用协议及作用
应用层协议是规定在网络上应用程序之间通信的一组规则和标准。 它们在互联网协议套件的最高层操作,负责端到端通信和用户界面功能。 在本文中,我们将涵盖所有核心通信、与电子邮件相关以及实时...
内存泄露的预防方法有哪些
内存泄漏(Memory Leak)是指程序在动态分配内存后,无法释放已经不再需要的内存空间,导致系统的可用内存持续减少,最终可能导致系统性能下降甚至崩溃。 预防方法: 1、合理管理内存分配和释放...