func doPing(kadem *kademlia.Kademlia, con kademlia.Contact, addressOrId string) { var pingAddress string if len(strings.Split(addressOrId, string(":"))) == 2 { pingAddress = addressOrId } else { id, err := kademlia.FromString(addressOrId) if err != nil { fmt.Printf("ERR could not interpret nodeid as ID") return } con, err := kadem.ContactFromID(id) if err != nil { fmt.Println("ERR : unknown node") return } pingAddress = contactToAddrString(con) } client, err := rpc.DialHTTP("tcp", pingAddress) if err != nil { log.Fatal("DialHTTP: ", err) } ping := kademlia.Ping{Sender: con} ping.MsgID = kademlia.NewRandomID() var pong kademlia.Pong err = client.Call("Kademlia.Ping", ping, &pong) if err != nil { log.Fatal("Call: ", err) } if ping.MsgID.Equals(pong.MsgID) { fmt.Print("OK\n") } else { fmt.Print("ERR : response message id does not match\n") } _ = client.Close() }