Я пишу свою первую программу для сокетов в Linux и пытаюсь напечатать IP-адрес и порт узла, к которому я подключился. Я использую getpeername () вместе с inet_ntop () и ntohs (), чтобы получить данные из структуры sockaddr_in. Когда я смотрю на результаты, я получаю IP-адрес, который не идет ни на один из известных мне серверов (сбой проверки связи) и говорит, что я слушаю порт, который, по словам netstat, не используется.
Что я делаю не так? Я должен получить 130.215.28.181:39000, но вместо этого я получаю 209.94.72.137:18825 каждый раз, когда я запускаю программу. Просмотр netstat показывает, что я действительно слушаю порт 39000.
Вот фрагмент из моей клиентской программы:
connect(sockfd,&serv_addr,sizeof(serv_addr))
// print welcome message
char ipstr[INET6_ADDRSTRLEN];
bzero(ipstr, 50);
struct sockaddr_in *address;
socklen_t address_len = sizeof(*address);
getpeername(sockfd, (struct sockaddr *) address, &address_len);
inet_ntop(AF_INET, &address->sin_addr, ipstr, sizeof(ipstr));
printf("Connection established successfully with %s:%i!\n", ipstr, ntohs(address->sin_port));