diff options
author | Oskar <[email protected]> | 2024-06-01 21:24:56 +0200 |
---|---|---|
committer | Oskar <[email protected]> | 2024-06-01 21:24:56 +0200 |
commit | 54b7f4b1d69673182c1358d484b35e86111b66be (patch) | |
tree | 5a4ece1af78965237a94e3aa9ec805cfcf5ba3b2 | |
parent | b0d494f15524fb8dc037c1fce2cb72c0556bb36e (diff) |
client thing, it only sends a message and exits but i learned how the basics like that work now
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | client.c | 60 |
2 files changed, 67 insertions, 5 deletions
@@ -6,31 +6,33 @@ TARGETS=helloworld TARGETS2=binding TARGETS3=listen TARGETS4=connecting -TARGETS5= +TARGETS5=client TESTTARGET=helloworld-t TESTTARGET2=binding-t TESTTARGET3=listen-t TESTTARGET4=connecting-t -TESTTARGET5= +TESTTARGET5=client-t SRCS=hello.c SRCS2=binding.c SRCS3=listen.c SRCS4=connecting.c -SRCS5= +SRCS5=client.c all: release clean: - rm -f bin/$(TARGETS) bin/$(TARGETS2) bin/$(TARGETS3) bin/$(TARGETS4) - rm -f test/$(TESTTARGET) test/$(TESTTARGET2) test/$(TESTTARGET3) test/$(TESTTARGET4) + rm -f bin/$(TARGETS) bin/$(TARGETS2) bin/$(TARGETS3) bin/$(TARGETS4) bin/$(TARGETS5) + rm -f test/$(TESTTARGET) test/$(TESTTARGET2) test/$(TESTTARGET3) test/$(TESTTARGET4) test/$(TESTTARGET5) tests: $(CC) $(CFLAGS_TESTBIN) $(SRCS) -o test/$(TESTTARGET) $(CC) $(CFLAGS_TESTBIN) $(SRCS2) -o test/$(TESTTARGET2) $(CC) $(CFLAGS_TESTBIN) $(SRCS3) -o test/$(TESTTARGET3) $(CC) $(CFLAGS_TESTBIN) $(SRCS4) -o test/$(TESTTARGET4) + $(CC) $(CFLAGS_TESTBIN) $(SRCS5) -o test/$(TESTTARGET5) release: $(CC) $(CFLAGS) $(SRCS) -o bin/$(TARGETS) $(CC) $(CFLAGS) $(SRCS2) -o bin/$(TARGETS2) $(CC) $(CFLAGS) $(SRCS3) -o bin/$(TARGETS3) $(CC) $(CFLAGS) $(SRCS4) -o bin/$(TARGETS4) + $(CC) $(CFLAGS) $(SRCS5) -o bin/$(TARGETS5) diff --git a/client.c b/client.c new file mode 100644 index 0000000..3ace3ac --- /dev/null +++ b/client.c @@ -0,0 +1,60 @@ +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +#include <stdio.h> +#include <string.h> +#include <stdint.h> +#include <unistd.h> +#include <stdbool.h> +#include <fcntl.h> +#include <stdlib.h> +#include <arpa/inet.h> +#include <netinet/in.h> + +// int listen(int sockfd, int backlog); +#define __FAIL EXIT_FAILURE +#define BACKLOG 2 +#define __PORT "62000" + +int main () { + + int sockfd = -1; + int gai_result; + int connect_result = -1; + struct addrinfo hints; + struct addrinfo *res; + struct addrinfo *p; + memset(&hints, 0, sizeof(hints)); + //hints.ai_flags = ; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + gai_result = getaddrinfo("192.168.1.18", __PORT, &hints, &res); + if (gai_result != 0) { + fprintf(stderr, "getaddrinfo: %d", gai_result); + exit(__FAIL); + } + + for (p = res ; p != NULL ; p = p->ai_next) { + + sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol); + if (sockfd == -1) { + fprintf(stderr, "socket fail\n"); + continue; + } + + connect_result = connect(sockfd, p->ai_addr, p->ai_addrlen); + if (connect_result == -1) { + fprintf(stderr, "connect fail\n"); + continue; + } + + } + if (connect_result == -1 || sockfd == -1) { exit(__FAIL); } + + char *msg = "Client says hello!\n"; + size_t len = strlen(msg); + send(sockfd, msg, len, 0); + freeaddrinfo(res); + return 0; +} |