client.go
1 // Package that implements the client's side logic of the program 2 package client 3 4 import ( 5 "fmt" 6 "github.com/VasilisBebis/TCP-AM/pkg/messages" 7 "log" 8 "net" 9 ) 10 11 type Client struct { 12 Conn net.Conn // client's connector 13 } 14 15 // NewClient creates an object of type [Client] and return it 16 func NewClient() *Client { 17 client := Client{Conn: nil} 18 return &client 19 20 } 21 22 // ConnectTo creates a connection between the client and the given server 23 func (c *Client) ConnectTo(server_ip string, server_port string) { 24 conn, err := net.Dial("tcp", server_ip+":"+server_port) 25 if err != nil { 26 log.Println(err) 27 } 28 fmt.Println("Connected to server ", server_ip, ":", server_port) 29 c.Conn = conn 30 } 31 32 // SendQuery sends the given query message to the server 33 func (c *Client) SendQuery(q messages.Query) { 34 ser_query := q.SerializeQuery() 35 _, err := c.Conn.Write(ser_query) 36 if err != nil { 37 log.Println(err) 38 } 39 } 40 41 // CloseConn closes the active connection of the client (if one exists) 42 func (c *Client) CloseConn() { 43 if c.Conn != nil { 44 c.Conn.Close() 45 } 46 }