Out-of-band data
Out-of-band data is sent ahead of any data that is already queued for transmission
但实际上,和普通数据共享数据流,是没有先后的(限TCP协议实现)
本质上是,tcp协议头上有urgent位,并记录了带外数据的位置偏移
一些注意的点
TCP supports out-of-band data,bug UDP doesn’t
TCP refers to out-of-band data as ‘‘urgent’’ data
TCP supports only a single byte of urgent data,but allows urgent data to be delivered out of band from the normal data delivery mechanisms
带外数据的通知:
1 信号通知
需要设置所有者进程,fcntl(sockfd, F_SETOWN, pid);
2 select,poll等io复用通知
无论1 or 2,这时候都可以用MSG_OOB标记,来接受数据
也可以不关注带外数据的通知,从正常数据流中读取带外数据
1 设置SO_OOBINLINE(改变socket读取数据的行为)
2 通过int sockatmark(int sockfd),来标记带外数据的出现