У меня три процесса на трех разных компьютерах.C - Открытый IP-адрес из файлового дескриптора
Процесс 1, клиент, запрашивает процесс 2 для IP и порт процесса 3.
Process 3 подключен к процессу 2 раньше, и процесс 2 получает IP процесса 3 из файлового дескриптора (Process 3 уже знает ip и порт процесса 2).
Это прекрасно работает, но если я пытаюсь запустить процесс 2 и 3 процесса в том же самом компьютере, то IP процесса 3 всегда 127.0.0.1 так процесс 1 никогда не находит процесс 3.
socklen_t len;
struct sockaddr_storage addr;
char ipstr[INET_ADDRSTRLEN];
len = sizeof addr;
getpeername(fd, (struct sockaddr*) &addr, &len);
struct sockaddr_in *s = (struct sockaddr_in *) &addr;
inet_ntop(AF_INET, &s->sin_addr, ipstr, sizeof ipstr);
Этот это код, который я использую, и ipstr - это IP-адрес, который я получаю.
Как это решить?
Большое спасибо!
Если IP-адрес 127.0.0.1, процесс 2 может искать адрес сетевых интерфейсов локальной сети. Но может быть больше одного, ему нужно будет выбрать один для отправки в процесс 1. – Barmar