diff --git a/server b/server new file mode 100755 index 0000000000000000000000000000000000000000..a588ded5d9cb376ad0abcfd88481af73387f827b Binary files /dev/null and b/server differ diff --git a/server.c b/server.c new file mode 100644 index 0000000000000000000000000000000000000000..7a00d335358684cd3d45e46b5039322ed4235fb9 --- /dev/null +++ b/server.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <netdb.h> +#include <netinet/in.h> +#include <unistd.h> + +int main(int argc, char *argv[]){ + struct addrinfo info, *res, *p; + int status; + char ipstr[INET6_ADDRSTRLEN]; + + if (argc <2){ + fprintf(stderr,"ERROR, no port provided\n");//to check if there is no port provided at start + exit(1); + } + + memset(&info, 0, sizeof(info)); + info.ai_family = AF_UNSPEC; ///sets it to IPv4 + info.ai_socktype = SOCK_STREAM; //TCP connection stream oriented + info.ai_flags = AI_PASSIVE; //use my current IP adress + + if((status = getaddrinfo(NULL, argv[1], &info, &res) != 0)){ + fprintf(stderr,"ERROR, no port provided\n");//to check if getaddrinfo gets any addrinfos + exit(1); + } + + for (p = res; p!= NULL; p = p->ai_next) + { + void *addr; + char *ipver; + + + if (p->ai_family == AF_INET) { // IPv4 + struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr; + addr = &(ipv4->sin_addr); + ipver = "IPv4"; + } else { // IPv6 + struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr; + addr = &(ipv6->sin6_addr); + ipver = "IPv6"; + } + + inet_ntop(p->ai_family, addr, ipstr, sizeof ipstr); + printf(" %s: %s\n", ipver, ipstr); + } + + + freeaddrinfo(res); + + return 0; + + + +} \ No newline at end of file