我在三台不同的计算机上有三个进程。
进程 1,客户端,向进程 2 询问进程 3 的 IP 和 PORT。
进程 3 早先连接到进程 2,进程 2 从文件描述符中获取进程 3 的 IP(进程 3 已经知道进程 2 的 ip 和端口)。
这工作正常,但如果我尝试在同一台计算机上运行进程 2 和进程 3,进程 3 的 IP 始终为 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。
我该如何解决这个问题?
非常感谢!