The Port 0 Trick 🔗
经常在 go
的网络库测试代码中,看见如下片段:
ln, err := Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
绑定 0
号套接字端口时,操作系统会自动分配一个 1024
号以上某个可用端口。Windows
和 Linux
都支持这种用法。
The ‘\0’ Trick 🔗
Linux 对 Unix Domain Socket
有个扩展,叫 Abstract Socket Namespace
。当创建的 Unix 本地套接字的路径名的起始字节为 \0
时,该套接字文件不会存放在文件系统,比较方便。这种套接字用 netstat
显示时以 @
打头。
$ netstat -nl | grep @
unix 2 [ ACC ] STREAM LISTENING 19729 @/tmp/dbus-tENgH5neni
...