diff options
Diffstat (limited to 'lib/net/client.c')
-rw-r--r-- | lib/net/client.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/net/client.c b/lib/net/client.c new file mode 100644 index 0000000..10d84b1 --- /dev/null +++ b/lib/net/client.c @@ -0,0 +1,31 @@ +#include "./client.h" +#include "common.h" +#include <netinet/in.h> + +conn_t* client_connect_to_server(const char* addr, const char* port) { + conn_t* conn = calloc(1, sizeof(*conn)); + + conn->conn_socket_fd = socket(AF_INET, SOCK_STREAM, 0); + if (conn->conn_socket_fd == -1) { + fprintf(stderr, "[client_connect_to_server] Unable to create socket()\n"); + exit(EXIT_FAILURE); + } + + struct sockaddr_in* conn_addr = get_addr(addr, port); + + if (connect(conn->conn_socket_fd, conn_addr, sizeof(*conn_addr)) == -1) { + if (errno == ECONNREFUSED) { + close(conn->conn_socket_fd); + free(conn); + + return NULL; + } + + fprintf(stderr, "[connect_to_master] Unable to connect() to master"); + exit(EXIT_FAILURE); + } + + free(conn_addr); + + return conn; +} |