summaryrefslogtreecommitdiffstats
path: root/lib/net/client.c
diff options
context:
space:
mode:
authormrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-20 21:50:25 +0300
committermrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-20 21:50:58 +0300
commit6416c8feecc760807f4edf5d9c8e8be9c2df8981 (patch)
tree8a8b734e3ab97060c7ed239f6217b5985b7f1189 /lib/net/client.c
parent78bd565b9c54a962e28ea4865be286b0605ca941 (diff)
feat(lib/net): network library implemented
Diffstat (limited to 'lib/net/client.c')
-rw-r--r--lib/net/client.c31
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;
+}