From 420ce14859e41d1e8b616ebf1c472763eabe93be Mon Sep 17 00:00:00 2001 From: Aaditya Dhruv Date: Sun, 25 May 2025 15:12:59 -0500 Subject: init --- src/CMakeLists.txt | 1 + src/network.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/test.c | 6 ++++++ 3 files changed, 62 insertions(+) create mode 100644 src/CMakeLists.txt create mode 100644 src/network.c create mode 100644 src/test.c (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..21ed023 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1 @@ +target_sources(junk PUBLIC test.c network.c) diff --git a/src/network.c b/src/network.c new file mode 100644 index 0000000..64d217b --- /dev/null +++ b/src/network.c @@ -0,0 +1,55 @@ +#include "junk/network.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TAG "network" + +int tcp_ipv4_send_packet(char* ip, char* port, char* data) { + + int sock; + struct addrinfo hints, *p, *res; + + memset(&hints, 0, sizeof hints); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + if (getaddrinfo(ip, port, &hints, &res) != 0) { + fprintf(stderr, "%s: getaddrinfo (%d): %s\n", TAG, errno, gai_strerror(errno)); + return errno; + } + + if ((sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) { + fprintf(stderr, "%s: socket (%d): %s\n", TAG, errno, strerror(errno)); + return errno; + } + + if (connect(sock, res->ai_addr, res->ai_addrlen) == -1) { + fprintf(stderr, "%s: connect (%d): %s\n", TAG, errno, strerror(errno)); + return errno; + } + + int len = strlen(data); + int bytes_sent = 0; + int total_bytes_sent = 0; + + while (1) { + if ((bytes_sent = send(sock, data, len, 0)) == -1) { + fprintf(stderr, "%s: send (%d): %s\n", TAG, errno, strerror(errno)); + return errno; + } + total_bytes_sent += bytes_sent; + if (bytes_sent == len) { + break; + } + } + close(sock); + freeaddrinfo(res); + return 0; +} diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..d8a0654 --- /dev/null +++ b/src/test.c @@ -0,0 +1,6 @@ +#include +#include "junk/test.h" + +void test_print(char* value) { + printf("Hello %s from libjunk\n", value); +} -- cgit