gosl/cmd/Server.go

60 lines
1023 B
Go
Raw Normal View History

2016-01-18 23:19:51 +01:00
package cmd // code.bitsetter.de/fun/gosl/cmd
import (
2016-02-05 16:19:43 +01:00
"encoding/gob"
2016-01-18 23:19:51 +01:00
"fmt"
2016-01-19 16:51:50 +01:00
"log"
"net"
2016-01-18 23:19:51 +01:00
"github.com/spf13/cobra"
2016-01-19 16:38:15 +01:00
"code.bitsetter.de/fun/gosl/data"
2016-01-18 23:19:51 +01:00
)
var cmdServer = &cobra.Command{
Use: "server",
Short: "Runs Gosl as a server",
2016-02-05 16:19:43 +01:00
Long: `Runs Gosl as a server
[TODO:]
gosl.json for configuration (Port/Adress, Level)
`,
2016-01-18 23:19:51 +01:00
// Run:
}
2016-01-19 16:51:50 +01:00
func handleConn(conn *net.TCPConn) {
2016-02-05 16:19:43 +01:00
log.Println("Got a connection from: ", conn.RemoteAddr().String())
2016-01-19 16:51:50 +01:00
2016-02-05 16:19:43 +01:00
gobd := gob.NewDecoder(conn)
var h data.Handshake
gobd.Decode(&h)
log.Println(h)
conn.Close()
2016-01-19 16:51:50 +01:00
}
2016-01-18 23:19:51 +01:00
func runServer(cmd *cobra.Command, args []string) {
fmt.Println("running server ...")
2016-01-19 16:51:50 +01:00
listener, err := net.ListenTCP("tcp", &net.TCPAddr{Port: 8989})
if err != nil {
log.Fatal(err)
panic("Could not open Listener")
}
defer listener.Close()
for {
conn, err := listener.AcceptTCP()
if err != nil {
log.Fatal(err)
panic("Listener could not accept connection!")
}
go handleConn(conn)
}
2016-01-19 16:38:15 +01:00
data.TestNC()
2016-01-18 23:19:51 +01:00
}
func init() {
cmdServer.Run = runServer
}