try to fixed #3

pull/92/head
CHN-STUDENT 2020-12-24 15:16:35 +08:00
parent 4aeb26f915
commit fcb0f6a4e6
2 changed files with 83 additions and 32 deletions

View File

@ -191,25 +191,40 @@ func getNetworkStatus() {
count := 0 count := 0
conn1 , err1 := net.DialTimeout("tcp",CU_ADDR,defaulttimeout) conn1 , err1 := net.DialTimeout("tcp",CU_ADDR,defaulttimeout)
if err1 != nil { if err1 != nil {
fmt.Println("Error try to connect China unicom :", err1) fmt.Println("[getNetworkStatus]Error try to connect China unicom :", err1)
count += 1 count += 1
return
} }
defer conn1.Close() tcpconn1, ok := conn1.(*net.TCPConn)
if ok {
tcpconn1.SetLinger(0)
}
if conn1 != nil {
conn1.Close()
}
conn2 , err2 := net.DialTimeout("tcp", CT_ADDR,defaulttimeout) conn2 , err2 := net.DialTimeout("tcp", CT_ADDR,defaulttimeout)
if err2 != nil { if err2 != nil {
fmt.Println("Error try to connect China telecom :", err2) fmt.Println("[getNetworkStatus]Error try to connect China telecom :", err2)
count += 1 count += 1
return
} }
defer conn2.Close() tcpconn2, ok := conn2.(*net.TCPConn)
if ok {
tcpconn2.SetLinger(0)
}
if conn2 != nil {
conn2.Close()
}
conn3 , err3 := net.DialTimeout("tcp", CM_ADDR,defaulttimeout) conn3 , err3 := net.DialTimeout("tcp", CM_ADDR,defaulttimeout)
if err3 != nil { if err3 != nil {
fmt.Println("Error try to connect China mobile :", err3) fmt.Println("[getNetworkStatus]Error try to connect China mobile :", err3)
count += 1 count += 1
return
} }
defer conn3.Close() tcpconn3, ok := conn2.(*net.TCPConn)
if ok {
tcpconn3.SetLinger(0)
}
if conn3 != nil {
conn3.Close()
}
if count >= 2 { if count >= 2 {
clientInfo.IpStatus = false clientInfo.IpStatus = false
} else { } else {
@ -281,9 +296,9 @@ func main() {
pingValueCU = NewPingValue() pingValueCU = NewPingValue()
pingValueCT = NewPingValue() pingValueCT = NewPingValue()
pingValueCM = NewPingValue() pingValueCM = NewPingValue()
//pingValueCU.RunCU() pingValueCU.RunCU()
//pingValueCT.RunCT() pingValueCT.RunCT()
//pingValueCM.RunCM() pingValueCM.RunCM()
netSpeed.Run() netSpeed.Run()
for { for {
var err error var err error
@ -348,25 +363,23 @@ func main() {
tupd() tupd()
trafficCount() trafficCount()
spaceCount() spaceCount()
//getNetworkStatus() getNetworkStatus()
netSpeed.Get() netSpeed.Get()
clientInfo.Ping10086, clientInfo.Time10086 = pingValueCM.Get() clientInfo.Ping10086, clientInfo.Time10086 = pingValueCM.Get()
clientInfo.Ping189, clientInfo.Time189 = pingValueCT.Get() clientInfo.Ping189, clientInfo.Time189 = pingValueCT.Get()
clientInfo.Ping10010, clientInfo.Time10010 = pingValueCU.Get() clientInfo.Ping10010, clientInfo.Time10010 = pingValueCU.Get()
//fmt.Println(clientInfo.Time10086)
//结构体转json字符串 //结构体转json字符串
data, err := jsoniter.MarshalToString(&clientInfo) data, err := jsoniter.MarshalToString(&clientInfo)
//fmt.Println(data) //fmt.Println(data)
if err != nil { if err != nil {
fmt.Println("Transformation Error: ", err) fmt.Println("Transformation Error: ", err)
return break
} }
info := "update " + data + "\n" info := "update " + data + "\n"
//fmt.Println(info)
_ , err = mainConnect.Write(str2bytes(info)) _ , err = mainConnect.Write(str2bytes(info))
if err != nil { if err != nil {
fmt.Println("Error Sending Data Info:", err) fmt.Println("Error Sending Data Info:", err)
return break
} }
} }
} }

View File

@ -28,6 +28,7 @@ func (pingValue *PingValue) RunCU() {
t := time.NewTicker(t1) t := time.NewTicker(t1)
var lostPacket = 0 var lostPacket = 0
var allPacket = 0 var allPacket = 0
var lostConnect = false
startTime := time.Now() startTime := time.Now()
defaulttimeout := 1 * time.Second defaulttimeout := 1 * time.Second
for { for {
@ -40,19 +41,32 @@ func (pingValue *PingValue) RunCU() {
t := time.Now() t := time.Now()
conn , err := net.DialTimeout("tcp",CU_ADDR,defaulttimeout) conn , err := net.DialTimeout("tcp",CU_ADDR,defaulttimeout)
if err != nil { if err != nil {
fmt.Println("Error try to connect China unicom :", err) fmt.Println("[ping]Error try to connect China unicom :", err)
lostConnect = true
lostPacket += 1 lostPacket += 1
return
} }
defer conn.Close() tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t) diffTime := time.Since(t)
//TODO:三网延迟和丢包率算法存在问题 //TODO:三网延迟和丢包率算法存在问题
//fmt.Println(diffTime) //fmt.Println(diffTime)
allPacket += 1 allPacket += 1
if allPacket > 100 { if allPacket > 100 {
pingValue.lostRate = float64(lostPacket/allPacket) pingValue.lostRate = float64(lostPacket/allPacket) * 100
} }
//fmt.Println("ALL LOST RATE")
//fmt.Printf("%10d %10d %10f\n",allPacket,lostPacket,pingValue.lostRate)
if lostConnect {
pingValue.ping = 0
} else {
pingValue.ping = uint64(diffTime/time.Millisecond) pingValue.ping = uint64(diffTime/time.Millisecond)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second) resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 { if resetTime > 3600 {
lostPacket = 0 lostPacket = 0
@ -71,6 +85,7 @@ func (pingValue *PingValue) RunCT() {
t := time.NewTicker(t1) t := time.NewTicker(t1)
var lostPacket = 0 var lostPacket = 0
var allPacket = 0 var allPacket = 0
var lostConnect = false
startTime := time.Now() startTime := time.Now()
defaulttimeout := 1 * time.Second defaulttimeout := 1 * time.Second
for { for {
@ -83,17 +98,28 @@ func (pingValue *PingValue) RunCT() {
t := time.Now() t := time.Now()
conn , err := net.DialTimeout("tcp",CT_ADDR,defaulttimeout) conn , err := net.DialTimeout("tcp",CT_ADDR,defaulttimeout)
if err != nil { if err != nil {
fmt.Println("Error try to connect China Telecom :", err) fmt.Println("[ping]Error try to connect China Telecom :", err)
lostConnect = true
lostPacket += 1 lostPacket += 1
return
} }
defer conn.Close() tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t) diffTime := time.Since(t)
allPacket += 1 allPacket += 1
if allPacket > 100 { if allPacket > 100 {
pingValue.lostRate = float64(lostPacket/allPacket) pingValue.lostRate = float64(lostPacket/allPacket) * 100
} }
if lostConnect {
pingValue.ping = 0
} else {
pingValue.ping = uint64(diffTime/time.Millisecond) pingValue.ping = uint64(diffTime/time.Millisecond)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second) resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 { if resetTime > 3600 {
lostPacket = 0 lostPacket = 0
@ -112,6 +138,7 @@ func (pingValue *PingValue) RunCM() {
t := time.NewTicker(t1) t := time.NewTicker(t1)
var lostPacket = 0 var lostPacket = 0
var allPacket = 0 var allPacket = 0
var lostConnect = false
startTime := time.Now() startTime := time.Now()
defaulttimeout := 1 * time.Second defaulttimeout := 1 * time.Second
for { for {
@ -124,17 +151,28 @@ func (pingValue *PingValue) RunCM() {
t := time.Now() t := time.Now()
conn , err := net.DialTimeout("tcp",CM_ADDR,defaulttimeout) conn , err := net.DialTimeout("tcp",CM_ADDR,defaulttimeout)
if err != nil { if err != nil {
fmt.Println("Error try to connect China mobile :", err) fmt.Println("[ping]Error try to connect China mobile :", err)
lostConnect = true
lostPacket += 1 lostPacket += 1
return
} }
defer conn.Close() tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t) diffTime := time.Since(t)
allPacket += 1 allPacket += 1
if allPacket > 100 { if allPacket > 100 {
pingValue.lostRate = float64(lostPacket/allPacket) pingValue.lostRate = float64(lostPacket/allPacket) * 100
} }
if lostConnect {
pingValue.ping = 0
} else {
pingValue.ping = uint64(diffTime/time.Millisecond) pingValue.ping = uint64(diffTime/time.Millisecond)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second) resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 { if resetTime > 3600 {
lostPacket = 0 lostPacket = 0