有没有办法从应用程序设置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()标志针对每个套接字配置它。看看ip和setsockopt的手册页。
类似于以下内容:
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));
}