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

View File

@ -28,6 +28,7 @@ func (pingValue *PingValue) RunCU() {
t := time.NewTicker(t1)
var lostPacket = 0
var allPacket = 0
var lostConnect = false
startTime := time.Now()
defaulttimeout := 1 * time.Second
for {
@ -40,19 +41,32 @@ func (pingValue *PingValue) RunCU() {
t := time.Now()
conn , err := net.DialTimeout("tcp",CU_ADDR,defaulttimeout)
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
return
}
defer conn.Close()
tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t)
//TODO:三网延迟和丢包率算法存在问题
//fmt.Println(diffTime)
allPacket += 1
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)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 {
lostPacket = 0
@ -71,6 +85,7 @@ func (pingValue *PingValue) RunCT() {
t := time.NewTicker(t1)
var lostPacket = 0
var allPacket = 0
var lostConnect = false
startTime := time.Now()
defaulttimeout := 1 * time.Second
for {
@ -83,17 +98,28 @@ func (pingValue *PingValue) RunCT() {
t := time.Now()
conn , err := net.DialTimeout("tcp",CT_ADDR,defaulttimeout)
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
return
}
defer conn.Close()
tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t)
allPacket += 1
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)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 {
lostPacket = 0
@ -112,6 +138,7 @@ func (pingValue *PingValue) RunCM() {
t := time.NewTicker(t1)
var lostPacket = 0
var allPacket = 0
var lostConnect = false
startTime := time.Now()
defaulttimeout := 1 * time.Second
for {
@ -124,17 +151,28 @@ func (pingValue *PingValue) RunCM() {
t := time.Now()
conn , err := net.DialTimeout("tcp",CM_ADDR,defaulttimeout)
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
return
}
defer conn.Close()
tcpconn, ok := conn.(*net.TCPConn)
if ok {
tcpconn.SetLinger(0)
}
if conn != nil {
conn.Close()
}
diffTime := time.Since(t)
allPacket += 1
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)
}
lostConnect = false
resetTime := uint64(time.Since(startTime) / time.Second)
if resetTime > 3600 {
lostPacket = 0