有没有办法从应用程序设置ttl?使用c++ rh,而不使用boost。在/etc/sysctl.conf文件中,值net.ipv4.ip_default_ttl不存在,在/ proc / sys / net / ipv4 / ip_default_ttl中写为64。我正在向多播组发送流量,并看到TTL = 1。想要将其增加到3。
谢谢。

最佳答案

您可以使用IP_MULTICAST_TTL setsockopt()标志针对每个套接字配置它。看看ipsetsockopt的手册页。

类似于以下内容:

void setttl(int sock, uint8_t ttl)
{
    int ret = setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(uint8_t));
    if (ret != 0)
        printf("Failed to setsockopt(): %s\n", strerror(errno));
}

10-06 03:51