func (s *Server) Accept(conn *net.TCPConn) { defer func() { if err := recover(); err != nil { } }() fmt.Println("客户端连接来自:", conn.RemoteAddr().String()) bs := make([]byte, 1024) var msg_tmp msg.OSMsg var login_user string once := sync.Once{} for { n, err := conn.Read(bs) if checkerr(err) { break } err = proto.Unmarshal(bs[:n], &msg_tmp) if checkerr(err) { continue } once.Do(func() { login_user = msg_tmp.GetFromu() err := s.keeper.Login(login_user, conn) if checkerr(err) { panic(err) } }) err = s.keeper.SendMsgTo(msg_tmp.GetTou(), bs[:n]) if checkerr(err) { continue } msg_tmp.Reset() } defer func() { s.keeper.Logout(login_user) }() }