From 54b7f4b1d69673182c1358d484b35e86111b66be Mon Sep 17 00:00:00 2001 From: Oskar Date: Sat, 1 Jun 2024 21:24:56 +0200 Subject: client thing, it only sends a message and exits but i learned how the basics like that work now --- Makefile | 12 +++++++----- client.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 client.c diff --git a/Makefile b/Makefile index 23f7569..e8df2e9 100644 --- a/Makefile +++ b/Makefile @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// 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; +} -- cgit v1.2.3