2013-11-21 24 views
1

有沒有辦法從應用程序設置ttl?使用C++ rh,不使用boost。在/etc/sysctl.conf文件中,net.ipv4.ip_default_ttl值不存在,在/ proc/sys/net/ipv4/ip_default_ttl中寫入64.我正在向多播組發送流量並查看TTL = 1。想把它增加到3. 謝謝。從linux上的應用程序更改TTL

回答

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)); 
} 
+0

感謝克里斯託弗!我正在做'setsockopt(m_socket,IPPROTO_IP,IP_MULTICAST_IF,(char *)&localInterface,sizeof(localInterface))'將讀取並檢查您的解決方案 –

+0

或者正確的,我錯過了一個選項。我沒有真正測試它! –

相關問題