From 03da5ca451491b92ec4b0c703d6349ca019fffec Mon Sep 17 00:00:00 2001 From: Ain <41307858+nero@users.noreply.github.com> Date: Thu, 8 Nov 2018 23:23:24 +0000 Subject: [PATCH] getpeername --- Makefile | 4 ++++ getpeername.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 Makefile create mode 100644 getpeername.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..02af61d --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +all: getpeername + +clean: + rm getpeername diff --git a/getpeername.c b/getpeername.c new file mode 100644 index 0000000..e3fff41 --- /dev/null +++ b/getpeername.c @@ -0,0 +1,39 @@ +#include +#include +#include + +#include +#include +#include +#include +#include + +int main(int argc, char **argv) { + struct sockaddr_storage peer; + socklen_t peersize = sizeof peer; + char hostname[256]; + char portname[32]; + + if (getpeername(0, (struct sockaddr * restrict)&peer, &peersize) < 0) { + perror("getpeername"); + exit(1); + } + + int v; + v = getnameinfo((struct sockaddr * restrict)&peer, + sizeof(struct sockaddr_storage), + hostname, + sizeof(hostname), + portname, + sizeof(portname), + NI_NUMERICHOST | NI_NUMERICSERV); + + if (v < 0) { + printf("getnameinfo: %s\n", gai_strerror(v)); + exit(1); + } + + printf("%s %s\n", hostname, portname); + + return 0; +}