mirror of https://github.com/cppla/ServerStatus
try to fixed #3
parent
4aeb26f915
commit
fcb0f6a4e6
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
pingValue.ping = uint64(diffTime/time.Millisecond)
|
||||
//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
|
||||
}
|
||||
pingValue.ping = uint64(diffTime/time.Millisecond)
|
||||
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
|
||||
}
|
||||
pingValue.ping = uint64(diffTime/time.Millisecond)
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue