是否有可能强制SCTP完全按顺序发送所有数据?
让我们进行这个实验:
1)使用SCTP-discard-server和SCTP-client。
2)让客户端多次计数到100,并分别将一个字节发送到服务器。
for(long i=0; i< 1000000000; i++){
char temp = (char)(i%100) + 1;
usrsctp_sendv(
sock, (void *)&temp, 1,
NULL, 0, NULL, 0, SCTP_SENDV_NOINFO, 0
);
}
3)让服务器沿着相同的方式计数,并将其数字与接收到的数字进行比较。
printf("%d %d\n", (int)buffer[0], (int)(test));
if ((int)test != (int)buffer[0]) break;
几秒钟后:
66 66
67 67
68 68
69 69
51 70
看这里!
我使用gcc7.3.0在我的Ubuntu 18.04机器上编译了$ gcc discard_server.c -Wall -lusrsctp
。是的,我已经尝试通过SCTP_NODELAY
禁用了所有类型的nagel算法。
我错过了什么?提前感谢任何提示。