Пир (peer) - в контексте сетевого программирования, это конечный узел - устройство (пк, телефон и так далее).
Функция getpeername() расскажет вам информацию, о том кто находится на конечном узле сокета:
#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr* addr, int* addrlen);Параметры:
-
int sockfd- дескриптор подключенного сокета (клиент, который подключился и о котором нам нужно получить информацию). -
struct sockaddr* addr- указатель , который будет хранить информацию о пире. -
int* addrlen- указатель на локальныйint, который должен иметь значениеsizeof(*addr)илиsizeof(struct sockaddr)
Функция возвращает -1 при ошибке, и записывает ошибку в errno.
Как только вы получите адрес в struct sockaddr* addr, вы можете использовать функции: inet_ntop(), getnameinfo() или gethostbyaddr() для вывода дополнительной информации.
Функция gethostname() возвращает информацию о компьютере, на котором запущенна программа. Эту информацию можно потом использовать в функции getaddrinfo() для определения IP-адреса вашей локальной машины.
Сигнатура:
#include <unistd.h>
int gethostname(char* hostname, size_t size);Параметры:
char* hostname- буфер, куда будет записан хост в виде строки, при выполнении функции.size_t size- размер буфера.
Функция возвращает 0 при успешном выполнении, -1 при ошибке (и записывает errno).