Прежде всего вы должны использовать функцию ntohs вместо ntohl.
ntohs () возвращает 16-битный номер порта, а ntohl возвращает 32-битный IP-адрес
Теперь вы можете получить данные клиента, используя getpeername ()
Синтаксис:
#include <sys/socket.h>
struct sockaddr_in client_address;
int getpeername(int sockfd, struct sockaddr *client, socklen_t *addrlen);
Вы можете найти более подробную информацию, используя команду man ..