tcp server 用于给andriod 客户端定时发送消息
liuxiaolong
2019-06-04 730c4de722b11932e81d92ff2e883b4b5f20c654
fix server,return when conn closed
1个文件已修改
36 ■■■■■ 已修改文件
server.go 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server.go
@@ -57,13 +57,10 @@
    go func(conn net.Conn, ech chan error) {
        buf := make([]byte, 10)
        for {
            _, err := conn.Read(buf)
            log.Log.Infoln("Read completed!")
            if err != nil {
                ech <- err
                log.Log.Infoln("Read Error!conn.Close")
                break
            }
            readMsg, err := conn.Read(buf)
            log.Log.Infoln("Read completed,readMsg:",readMsg,",err:",err)
            ech <- err
            break
        }
    }(conn, ech)
    tick := time.NewTicker(10 * time.Second)
@@ -71,36 +68,33 @@
    for {
        select {
        case <-tick.C:
            handleMessage(conn, connArr)
            if !handleMessage(conn, connArr){
                conn.Close()
                return
            }
        case err := <-ech:
            log.Log.Infoln(err, "remoteAddr ", remoteAddr, " close")
            conn.Close()
            break
            return
        }
    }
    log.Log.Infoln("Client at " + remoteAddr + " disconnected.")
}
func handleMessage(conn net.Conn, connArr []net.Conn) {
func handleMessage(conn net.Conn, connArr []net.Conn) bool {
    jsonstring := esutil.PostAction(*sec, *Eurl, *Picurl)
    if jsonstring == nil {
        log.Log.Infoln("the data is nil")
        return
        log.Log.Infoln("the data is nil,remoteArr:",conn.RemoteAddr())
        return true
    }
    jsonstring = append(jsonstring, []byte("\000")...)
    log.Log.Infoln("jsonstring len: ", len(jsonstring), "\000 data: ", len("\000"))
    _, err := conn.Write(jsonstring)
    if err !=nil{
        log.Log.Infoln("conn.WriteErr:",err)
        //index :=0
        //for ;index < len(connArr); {
        //    if connArr[index] == conn{
        //        connArr = append(connArr[:index],connArr[index+1:]...)
        //        continue
        //    }
        //    index++
        //}
        return false
    }
    return true
}