able to establish connection to trackmania server
This commit is contained in:
parent
58499493d8
commit
54d86fd1df
8
main.go
8
main.go
|
@ -2,7 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"git.fanyx.xyz/fanyx/goufy/pkg/config"
|
||||
"git.fanyx.xyz/fanyx/goufy/pkg/connection"
|
||||
"git.fanyx.xyz/fanyx/goufy/pkg/gbxremote"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
@ -10,8 +10,10 @@ func main() {
|
|||
var conf config.AppConfig
|
||||
conf.ReadConfig()
|
||||
|
||||
//initiate connection to trackmania server
|
||||
var client connection.GbxClient
|
||||
//fmt.Printf("%#v\n", conf)
|
||||
|
||||
// initial connection to trackmania server
|
||||
var client gbxremote.GbxClient
|
||||
client.Connect(conf)
|
||||
|
||||
}
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
package connection
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"git.fanyx.xyz/fanyx/goufy/pkg/config"
|
||||
)
|
||||
|
||||
type GbxClient struct {
|
||||
conn net.Conn
|
||||
reqHandle int
|
||||
}
|
||||
|
||||
func (client *GbxClient) Connect(c config.AppConfig) {
|
||||
// create connection string from config
|
||||
gbxConnString := c.Trackmania.Host + strconv.FormatInt(int64(c.Trackmania.Port), 10)
|
||||
|
||||
var err error
|
||||
//initiate GbxClient
|
||||
client.conn, err = net.Dial("tcp", gbxConnString)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer client.conn.Close()
|
||||
|
||||
// handshake
|
||||
buf := make([]byte, 4)
|
||||
_, err = client.conn.Read(buf)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println("read content:", buf)
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package gbxremote
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"log"
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"git.fanyx.xyz/fanyx/goufy/pkg/config"
|
||||
)
|
||||
|
||||
type GbxClient struct {
|
||||
conn net.Conn
|
||||
reqHandle int
|
||||
}
|
||||
|
||||
func (client *GbxClient) Connect(c config.AppConfig) {
|
||||
// create connection string from config
|
||||
gbxConnString := c.Trackmania.Host + ":" + strconv.FormatInt(int64(c.Trackmania.Port), 10)
|
||||
|
||||
var err error
|
||||
//initiate GbxClient
|
||||
client.conn, err = net.Dial("tcp", gbxConnString)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer client.conn.Close()
|
||||
|
||||
// handshake
|
||||
buf := make([]byte, 4)
|
||||
_, err = client.conn.Read(buf)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
// read handshake length
|
||||
len := binary.LittleEndian.Uint32(buf)
|
||||
// break handshake if length over 64
|
||||
if len > 64 {
|
||||
log.Fatal("Handshake is not GBXRemote")
|
||||
}
|
||||
// otherwise continue to read protocol string
|
||||
buf = make([]byte, len)
|
||||
_, err = client.conn.Read(buf)
|
||||
|
||||
p := string(buf[:])
|
||||
if p != "GBXRemote 2" {
|
||||
log.Fatal("Protocol not GBXRemote 2")
|
||||
}
|
||||
|
||||
log.Println("Connection established successfully!")
|
||||
}
|
Loading…
Reference in New Issue