在 Erlang 中,发送数据包很简单UDP
,就是gen_udp:open()
用来创建一个套接字,然后gen_udp:send()
用来发送数据。
但是,默认情况下,TCP/IP
如果 IP 数据包的大小不超过 MTU 大小,Linux 堆栈将在 IP 标头中设置不分段 (DF) 标志。如果大小超过MTU
大小,UDP
数据包将被分片。
有没有办法UDP
只为数据包设置 DF 标志?
我知道在 C 语言中,以下代码可用于清除 DF 标志。但我在 Erlang 中找不到方法。
int optval=0;
if(-1 == setsockopt(sockfd,IPPROTO_IP,IP_MTU_DISCOVER,&optval,sizeof(optval))) {
printf("Error: setsockopt %d\n",errno);
exit(1);
}
谢谢