具体见代码,程序运行到m.Run()就不往下执行了
也就是说fmt.Println("!!!!!!!")执行不到
我现在想让他们同时工作。
我想他们同时执行
func main() {
m := martini.Classic()
m.Get("/device/:serialnumber" , func(params martini.Params) string {
detail := GetDeviceState(params["serialnumber"])
result , _ := json.Marshal(detail)
return string(result)
})
m.Get("/device/ctrl/:serialnumber/:state" , func(params martini.Params) string {
detail := DeviceStateUpdate(params["serialnumber"] , params["state"])
result , _ := json.Marshal(detail)
return string(result)
})
m.Run()
fmt.Println("!!!!!!!")
if len(os.Args) != 2 {
fmt.Println("Usage:<command> <port>")
return
}
port := os.Args[1]
tcpAddr, err := net.ResolveTCPAddr("tcp4", "localhost:"+port)
handleError(err)
tcpListener, err := net.ListenTCP("tcp4", tcpAddr)
handleError(err)
fmt.Println("TCPServer Listening at port:", port)
defer tcpListener.Close()
for {
tcpConn, err := tcpListener.AcceptTCP()
fmt.Printf("The client:%s has connected!\n", tcpConn.RemoteAddr().String())
handleError(err)
defer tcpConn.Close()
go handleConn(tcpConn)
}
}
m.Run()是调用
这是阻塞的。
所以你要将m.Run()跑在一个goroutine