/ pkg / client / client.go
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  }