add
This commit is contained in:
parent
8efea89357
commit
51aba43633
23
client.go
23
client.go
@ -61,6 +61,9 @@ type Client struct {
|
|||||||
recvPacket uint64
|
recvPacket uint64
|
||||||
sendPacketSize uint64
|
sendPacketSize uint64
|
||||||
recvPacketSize uint64
|
recvPacketSize uint64
|
||||||
|
|
||||||
|
pingPacketSize uint64
|
||||||
|
pongPacketSize uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClientConn struct {
|
type ClientConn struct {
|
||||||
@ -119,12 +122,16 @@ func (p *Client) Run() {
|
|||||||
interval := time.NewTicker(time.Second)
|
interval := time.NewTicker(time.Second)
|
||||||
defer interval.Stop()
|
defer interval.Stop()
|
||||||
|
|
||||||
|
interval1 := time.NewTicker(time.Millisecond * 1)
|
||||||
|
defer interval1.Stop()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-interval.C:
|
case <-interval.C:
|
||||||
p.checkTimeoutConn()
|
p.checkTimeoutConn()
|
||||||
p.ping()
|
|
||||||
p.showNet()
|
p.showNet()
|
||||||
|
case <-interval1.C:
|
||||||
|
p.ping()
|
||||||
case r := <-recv:
|
case r := <-recv:
|
||||||
p.processPacket(r)
|
p.processPacket(r)
|
||||||
}
|
}
|
||||||
@ -181,8 +188,9 @@ func (p *Client) processPacket(packet *Packet) {
|
|||||||
if packet.msgType == PING {
|
if packet.msgType == PING {
|
||||||
t := time.Time{}
|
t := time.Time{}
|
||||||
t.UnmarshalBinary(packet.data)
|
t.UnmarshalBinary(packet.data)
|
||||||
d := time.Now().Sub(t)
|
//d := time.Now().Sub(t)
|
||||||
fmt.Printf("pong from %s %s\n", packet.src.String(), d.String())
|
//fmt.Printf("pong from %s %s\n", packet.src.String(), d.String())
|
||||||
|
p.pongPacketSize++
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,16 +247,19 @@ func (p *Client) ping() {
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
b, _ := now.MarshalBinary()
|
b, _ := now.MarshalBinary()
|
||||||
sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, "", (uint32)(PING), b, p.sproto, p.rproto)
|
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)
|
//fmt.Printf("ping %s %s %d %d %d %d\n", p.addrServer, now.String(), p.sproto, p.rproto, p.id, p.sequence)
|
||||||
p.sequence++
|
p.sequence++
|
||||||
|
p.pingPacketSize++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Client) showNet() {
|
func (p *Client) showNet() {
|
||||||
fmt.Printf("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s\n",
|
fmt.Printf("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s ping %d/s pong %d/s\n",
|
||||||
p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024)
|
p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024, p.pingPacketSize, p.pongPacketSize)
|
||||||
p.sendPacket = 0
|
p.sendPacket = 0
|
||||||
p.recvPacket = 0
|
p.recvPacket = 0
|
||||||
p.sendPacketSize = 0
|
p.sendPacketSize = 0
|
||||||
p.recvPacketSize = 0
|
p.recvPacketSize = 0
|
||||||
|
p.pingPacketSize = 0
|
||||||
|
p.pongPacketSize = 0
|
||||||
}
|
}
|
||||||
|
12
server.go
12
server.go
@ -24,6 +24,9 @@ type Server struct {
|
|||||||
recvPacket uint64
|
recvPacket uint64
|
||||||
sendPacketSize uint64
|
sendPacketSize uint64
|
||||||
recvPacketSize uint64
|
recvPacketSize uint64
|
||||||
|
|
||||||
|
echoId int
|
||||||
|
echoSeq int
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServerConn struct {
|
type ServerConn struct {
|
||||||
@ -33,8 +36,6 @@ type ServerConn struct {
|
|||||||
activeTime time.Time
|
activeTime time.Time
|
||||||
close bool
|
close bool
|
||||||
rproto int
|
rproto int
|
||||||
echoId int
|
|
||||||
echoSeq int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Server) Run() {
|
func (p *Server) Run() {
|
||||||
@ -67,6 +68,9 @@ func (p *Server) Run() {
|
|||||||
|
|
||||||
func (p *Server) processPacket(packet *Packet) {
|
func (p *Server) processPacket(packet *Packet) {
|
||||||
|
|
||||||
|
p.echoId = packet.echoId
|
||||||
|
p.echoSeq = packet.echoSeq
|
||||||
|
|
||||||
if packet.msgType == PING {
|
if packet.msgType == PING {
|
||||||
t := time.Time{}
|
t := time.Time{}
|
||||||
t.UnmarshalBinary(packet.data)
|
t.UnmarshalBinary(packet.data)
|
||||||
@ -101,8 +105,6 @@ func (p *Server) processPacket(packet *Packet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
udpConn.activeTime = now
|
udpConn.activeTime = now
|
||||||
udpConn.echoId = packet.echoId
|
|
||||||
udpConn.echoSeq = packet.echoSeq
|
|
||||||
|
|
||||||
_, err := udpConn.conn.Write(packet.data)
|
_, err := udpConn.conn.Write(packet.data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -140,7 +142,7 @@ func (p *Server) Recv(conn *ServerConn, id string, src *net.IPAddr) {
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
conn.activeTime = now
|
conn.activeTime = now
|
||||||
|
|
||||||
sendICMP(conn.echoId, conn.echoSeq, *p.conn, src, "", id, (uint32)(DATA), bytes[:n], conn.rproto, -1)
|
sendICMP(p.echoId, p.echoSeq, *p.conn, src, "", id, (uint32)(DATA), bytes[:n], conn.rproto, -1)
|
||||||
|
|
||||||
p.sendPacket++
|
p.sendPacket++
|
||||||
p.sendPacketSize += (uint64)(n)
|
p.sendPacketSize += (uint64)(n)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user