3 台の異なるコンピューターに 3 つのプロセスがあります。
クライアントであるプロセス 1 は、プロセス 2 にプロセス 3 の IP とポートを要求します。
プロセス 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 です。
どうすればこれを解決できますか?
どうもありがとう!