From 463dfbd3e56ffc03fbc9e7e00504629ab3db7ec3 Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Mon, 18 Mar 2024 13:22:26 -0400 Subject: [PATCH] IPv6 support for RecvAllNB() --- server.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server.cpp b/server.cpp index a20f644..37f8150 100644 --- a/server.cpp +++ b/server.cpp @@ -72,8 +72,11 @@ char* Server::recvAllNB() { /* Convert the s_addr field of the caseted struct to host network-byte, and convert it to a dotted decimal */ peer_addr = connect_code::dec_to_dotted_dec(std::to_string(htonl(temp_struct->sin_addr.s_addr))); } else { - /* FOR IPv6 */ - peer_addr = "IPV6 NOT SUPPORTED YET"; + /* FOR IPv6 - Use the inet_ntop function, and convert the struct's address into a string */ + struct sockaddr_in6* temp_struct = (struct sockaddr_in6*)this->dest; + char* temp_buf = (char *)malloc(sizeof(char) * (INET6_ADDRSTRLEN + 1)); + peer_addr = std::string(inet_ntop(AF_INET6, temp_struct->sin6_addr.s6_addr, temp_buf, INET6_ADDRSTRLEN)); + free(temp_buf); } return to_return; @@ -98,8 +101,7 @@ called immediately after the constructor. If the socket is TCP, it also sets the socket to listen for incoming connections. This function throws an exception if the socket could not be created. The excpetion is an integer corresponding to the errno of the failing function, and enables the caller to print a corresponding error message by -'catching' the thrown exception and using strerror(). -This function also sets a timeout of 100ms for UDP sockets */ +'catching' the thrown exception and using strerror().*/ void Server::create_socket() { Sock::create_socket();