从linux上的应用程序更改TTL

时间:2013-11-21 16:52:31

标签: c++ linux networking multicast

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

1 个答案:

答案 0 :(得分: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));
}