代码和环境

Ubuntu 系统

安装 CMake, make, gcc/g++.

如果是 CentOS 或 Red Hat,需要执行 yum install 命令:

  1. sudo yum install gcc g++ make cmake

使用 CMake 编译程序

  1. 生成配置文件: Makefile
  1. $ cd build && cmake -f ../
  1. 在 build 目录运行 make: 编译等步骤. 可执行程序生成在 build/bin 目录下
  1. $ make

MacOS

CLion

有些情况下,启动程序时需要输入一些参数,这个时候需要使用“Edit Configurations”为可执行程序配置参数。下面是一个例子:

image.png

Windows

学习路径

语言

C 语言是可以和系统直接交互的语言,无论是系统调用,还是内核实现,都和 C 语言有非常直接的联系.

C 语言精髓:

  1. 数组
  2. 指针
  3. 结构体
  4. 函数

书籍推荐

疑难解答

一段数据流从应用程序发送端,一直到应用程序接收端,总共经过了多少次拷贝?

image.png

TX ring 在网络驱动和网卡之间,也是一个传输请求的队列。

网卡作为物理设备工作在物理层,主要工作是把要发送的报文保存到内部的缓存中,并发送出去。

网络驱动和上层之间没有缓存,因为网络驱动使用 Napi 进行数据传输。因此,可以认为上层直接从 RX ring 中读取报文。
**