You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"dcg/client"
|
|
"dcg/game"
|
|
"errors"
|
|
"github.com/urfave/cli"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
app := cli.NewApp()
|
|
app.Name = "弹幕指挥官 GameServer"
|
|
app.Author = "NorthLan"
|
|
app.Email = "6995syu@163.com"
|
|
app.Description = "弹幕指挥官 TCP服务端"
|
|
app.Commands = []cli.Command{
|
|
{
|
|
Name: "server",
|
|
Flags: []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "listen,l",
|
|
Usage: "-l --listen [ip]:8888",
|
|
Value: "127.0.0.1:8888",
|
|
},
|
|
},
|
|
Action: runMaster,
|
|
},
|
|
{
|
|
Name: "client",
|
|
Flags: []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "addr",
|
|
Usage: "--addr xxx:xxx",
|
|
Value: "127.0.0.1:8888",
|
|
},
|
|
},
|
|
Action: runClient,
|
|
},
|
|
}
|
|
if err := app.Run(os.Args); err != nil {
|
|
log.Fatalf("Startup server error %+v", err)
|
|
}
|
|
}
|
|
|
|
func runMaster(args *cli.Context) error {
|
|
listen := args.String("listen")
|
|
if listen == "" {
|
|
return errors.New("master listen address cannot empty")
|
|
}
|
|
|
|
log.Println("Game server listen address", listen)
|
|
|
|
game.Run(listen)
|
|
|
|
return nil
|
|
}
|
|
|
|
func runClient(args *cli.Context) error {
|
|
addr := args.String("addr")
|
|
if addr == "" {
|
|
return errors.New("address cannot empty")
|
|
}
|
|
|
|
log.Println("Client start, connect to", addr)
|
|
|
|
return client.NewClient(addr)
|
|
}
|