3 가지 컴퓨터에서 3 가지 프로세스가 있습니다.C - 파일 설명자의 공용 IP 주소
과정 1, 클라이언트는, 프로세스 이전 2 프로세스에 연결 3.
프로세스 3의 IP와 PORT를위한 프로세스 2를 요청하고 프로세스 2는 파일 기술자 (공정 3에서 프로세스 3의 IP를 가져옵니다 이미 프로세스 2의 IP와 포트를 알고 있습니다.
이 잘 작동하지만 동일한 컴퓨터에서 프로세스 2 및 프로세스 3을 실행하려고하면, 프로세스 3의 IP는 항상 일을 처리 127.0.0.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