diff --git a/client.go b/client.go index a271517..6f7b70b 100644 --- a/client.go +++ b/client.go @@ -9,7 +9,7 @@ import ( "time" ) -func NewClient(addr string, server string, target string, timeout int, sproto int, rproto int, pingSeq int) (*Client, error) { +func NewClient(addr string, server string, target string, timeout int, sproto int, rproto int) (*Client, error) { ipaddr, err := net.ResolveUDPAddr("udp", addr) if err != nil { @@ -32,7 +32,6 @@ func NewClient(addr string, server string, target string, timeout int, sproto in timeout: timeout, sproto: sproto, rproto: rproto, - pingSeq: pingSeq, }, nil } @@ -43,7 +42,6 @@ type Client struct { timeout int sproto int rproto int - pingSeq int ipaddr *net.UDPAddr addr string @@ -121,16 +119,12 @@ func (p *Client) Run() { interval := time.NewTicker(time.Second) defer interval.Stop() - intervalPing := time.NewTicker(time.Millisecond * (time.Duration)(p.pingSeq)) - defer intervalPing.Stop() - for { select { case <-interval.C: p.checkTimeoutConn() - p.showNet() - case <-intervalPing.C: p.ping() + p.showNet() case r := <-recv: p.processPacket(r) } @@ -241,11 +235,13 @@ func (p *Client) checkTimeoutConn() { } func (p *Client) ping() { - now := time.Now() - b, _ := now.MarshalBinary() - sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, "", (uint32)(PING), b, p.sproto, p.rproto) - fmt.Printf("ping %s %s %d %d %d %d\n", p.addrServer, now.String(), p.sproto, p.rproto, p.id, p.sequence) - p.sequence++ + if p.sendPacket == 0 { + now := time.Now() + b, _ := now.MarshalBinary() + sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, "", (uint32)(PING), b, p.sproto, p.rproto) + fmt.Printf("ping %s %s %d %d %d %d\n", p.addrServer, now.String(), p.sproto, p.rproto, p.id, p.sequence) + p.sequence++ + } } func (p *Client) showNet() { diff --git a/cmd/main.go b/cmd/main.go index e2ede6f..97ffac0 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -36,9 +36,6 @@ Usage: -rproto 客户端接收ping协议的协议,默认是0 The protocol that the client receives the ping. The default is 0. - - -ping 客户端发送ping协议的间隔 - The protocol that the client receives the ping. The default is 0. ` func main() { @@ -50,7 +47,6 @@ func main() { timeout := flag.Int("timeout", 60, "conn timeout") sproto := flag.Int("sproto", 8, "send ping proto") rproto := flag.Int("rproto", 0, "recv ping proto") - ping := flag.Int("ping", 1000, "recv ping proto") flag.Usage = func() { fmt.Printf(usage) } @@ -80,7 +76,7 @@ func main() { fmt.Printf("server %s\n", *server) fmt.Printf("target %s\n", *target) - c, err := pingtunnel.NewClient(*listen, *server, *target, *timeout, *sproto, *rproto, *ping) + c, err := pingtunnel.NewClient(*listen, *server, *target, *timeout, *sproto, *rproto) if err != nil { fmt.Printf("ERROR: %s\n", err.Error()) return