在linux下使用sctp socket 发送报文,经常出现应用已经调用了send接口,但是报文并没有从网卡发出去,延迟在100ms以上。
原因应该是send仅仅把报文放到了缓冲区,而内核并没有真正的发送出去。
需要把socket设置为非延迟发送。
int tmpflag = 1;
if(-1 == setsockopt( connSock, IPPROTO_SCTP, SCTP_NODELAY,
(const void *)&tmpflag, sizeof(int)))
{
ERR_LOG("setsockopt of SCTP_NODELAY error!");
}
网友评论