diff options
author | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-20 21:50:25 +0300 |
---|---|---|
committer | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-20 21:50:58 +0300 |
commit | 6416c8feecc760807f4edf5d9c8e8be9c2df8981 (patch) | |
tree | 8a8b734e3ab97060c7ed239f6217b5985b7f1189 /lib/net/client.c | |
parent | 78bd565b9c54a962e28ea4865be286b0605ca941 (diff) |
feat(lib/net): network library implemented
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; +} |