#include <functional>
typedef std::function<int(int, int)> handler;
C++11定义函数指针。
inet_ntoa
- inet_ntoa函数用来将整数型的ip地址转换成字符串型的ip。但是这个函数只要求传入一个整数,没有要求传入内存,所以我们不禁好奇,inet_ntoa在哪里开辟的字符串的空间呢?
- 在静态区。inet_ntoa会在静态区开辟对应的字符串风格的ip,然后传回这个字符串的地址。那么如果多次调用inet_ntoa,后面的ip会覆盖前面的ip。
- inet_ntoa不是线程安全的。
socket和file
- 我们在创建套接字时,操作系统会为我们创建一系列的数据结构来管理套接字。那么究竟创建了什么呢?我们来探讨一下。
- socket也是文件,操作系统先会为我们创建一个file结构体,在该结构体里有一个private_data指针,这个指针指向该文件对应的socket结构体。
- socket结构体中有一个sk指针,指向sock结构体,这个结构体实际上是一系列结构体的子结构,当我们使用tcp结构体时,直接(tcp_sock*)sk,这样我们就看见了tcp的sock信息。
- socket结构体中也有一个file指针,指向file结构体,这样就能贯穿底层和上层。
|