Вы не упомянули свою целевую платформу (или почему вы должны заново изобрести колесо, как было упомянуто), но независимо от того, что мы идем.
На * NIX это стандартная опция сокета для вашего уже открытого сокета. Это просто на другом уровне сетевого стека. Тааак ...
setsockopt (socket_descriptor, IPPROTO_IP, IP_TTL, val, val_var_len);
См. У. Ричарда Стивенса для его библии на сокетах, если вы находитесь в мире * NIX. В противном случае кто-то другой может / может помочь.