netgiv/client.go

76 lines
1.4 KiB
Go
Raw Normal View History

package main
import (
"encoding/gob"
"errors"
"fmt"
"log"
"net"
"github.com/tardisx/netgiv/secure"
)
type Client struct {
port int
}
func (c *Client) Connect() error {
address := fmt.Sprintf("127.0.0.1:%d", c.port)
serverAddress, _ := net.ResolveTCPAddr("tcp", address)
conn, err := net.DialTCP("tcp", nil, serverAddress)
if err != nil {
return errors.New("problem connecting to server, is it running?\n")
}
defer conn.Close()
fmt.Printf("Connection on %s\n", address)
sharedKey := secure.Handshake(conn)
secureConnection := secure.SecureConnection{Conn: conn, SharedKey: sharedKey}
// reader := bufio.NewReader(os.Stdin)
enc := gob.NewEncoder(&secureConnection)
for {
msg := secure.PacketStart{
OperationType: secure.OperationTypeSend,
ClientName: "Justin Hawkins",
ProtocolVersion: "v1.0",
AuthToken: "abc123",
}
// gob.Register(secure.PacketSendStart{})
err := enc.Encode(msg)
if err != nil {
panic(err)
}
data := secure.PacketSendDataStart{
Filename: "foobar",
TotalSize: 3,
Data: []byte{0x20, 0x21, 0x22},
}
err = enc.Encode(data)
if err != nil {
panic(err)
}
log.Print("done that")
conn.Close()
break
// response := make([]byte, 1024)
// _, err = secureConnection.Read(response)
// if err != nil {
// fmt.Print("Connection to the server was closed.\n")
// break
// }
// fmt.Printf("%s\n", response)
}
return nil
}