Are you trying to create a traceroute type functionality? I'm not familiar with the objects you are using (are those Java objects??), but I know a bit about how trace route works.
For a typical trace route, you generally try to send a series of pings to your destination IP, with each of the pings having an incrementing time to live value. The time to live is decremented by each router that passes it on until it gets to 0. If it gets to 0, the router sends some form of a nack back.
So, you start out by sending a ping with a TTL of 1. The first router to get it will nack back. Then you send a ping with a TTL of 2. The second router will nack back. Etc. etc.
If you want more details of how traceroute works, there is probably an RFC describing it somewhere. Do a search at http://www.faqs.org/rfcs/
Also, you might be able to find the source to the linux traceroute implementation.