UNP vol1 笔记 Socket选项

1.SO_REUSEADDR 和 SO_REUSEPORT

SO_REUSEADDR 这个名词取得有点问题的,这一选项的目的是重用端口,不重用地址,完全重用地址和端口是针对多播的这种特殊情况的,于是为了支持多播,又加入了SO_REUSEPORT,这个选项是可以重用地址和端口的,结果这两个选项字面上的意思和实际的意思刚好相反;没办法用就用吧,知道意思就行了;(UNP,vol1,p210)


2. SO_BROADCAST


3. SO_RCVLOWAT 和 SO_SNDLOWAT

receive low water mark : tcp 和 udp 默认都设置为1,只要有数据就可读;

send low water mark:对于tcp,当发送缓冲区剩余空间大于low water时,tcp socket可写;

对于udp,udp 没有发送缓冲,只有缓冲区大小这个值(SO_SNDBUF,这个值设定之后,是不会因为发送数据而变化的)因为udp根本就不会保存数据报的拷贝;只要SO_SNDBUF大于low water,udp socket就是可写的;如果数据包的大小大于SO_SNDBUF,发送会出错:EMSGSIZE;(p209,p164,p59)

4. SO_TYPE

获取socket类型:SOCK_STREAM, SOCK_DGRAM (bits/socket.h)


linux下这些选项宏定义在:<asm-generic/socket.h>


你可能感兴趣的:(UNP vol1 笔记 Socket选项)